假设有一个控制台应用程序,它将文本打印到命令窗口中。还有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