假設有一個控制檯應用程序,它將文本打印到命令窗口中。還有Logger WPF窗口,它必須重複輸出。 IDE迫使我在新線程(STA)內創建窗口:如何從控制檯應用程序訪問UI元素
public SomeClass()
{
var loggerThread = new Thread(() =>
{
var logWindow = new Window
{
Title = "Logger", Width = 100, Height = 100
};
var stackPanel = new StackPanel
{
Name = "stackPanel"
};
stackPanel.Children.Add(new TextBlock
{
Name = "textBlock", Text = "new text\n"
});
logWindow.Content = stackPanel;
logWindow.ShowDialog();
});
loggerThread.SetApartmentState(ApartmentState.STA);
loggerThread.IsBackground = true;
loggerThread.Start();
}
public void PutInfo(string msg)
{
// how to access textBlock here?
...textBlock.Text = "some info";
}
如何在線程啓動後訪問textBlock.Text。 換句話說,如何通過PutInfo()方法從另一個類訪問該線程中的UI元素?
搜索的SynchronizationContext改變
Description
。 順便說一句我認爲這是例如http://stackoverflow.com/questions/11625208/accessing-ui-main-thread-safely-in-wpf – Andre