在我的WPF表单中,我有一个文本框.
当计时器过去时,需要获取文本框的内容.
经过的计时器正在与UI不同的线程中工作.
问题有点双重:
从GUI线程交叉线程中读取值的最简单,最可读的方法是什么(我发现了几个并且它们看起来太冗长了什么应该是真正基本的东西)?
我不能以非阻塞的方式阅读文本吗?在这种情况下我不关心线程安全.
--EDIT--
我使用了Dispatcher,但是有一个更详细的调用,那么John有什么:
originalTextBox.Dispatcher.Invoke( DispatcherPriority.Normal, (ThreadStart) delegate{text=originalTextBox.Text;} );
不过甚至不介意.访问文本属性应该是完全基本的.
Oisin是对的,你需要看看Dispatcher.这样的事情应该有效,而且不是太冗长:
System.Windows.Application.Current.Dispatcher.Invoke( DispatcherPriority.Normal, (ThreadStart)delegate { text = MyTextBox.Text; });
你可以:
使用它Dispatcher
来安排从后台线程在UI线程上执行的消息.一DispatcherPriority
的Send
,会得到最快的响应可能的.
使用a DispatcherTimer
在UI线程上定期执行消息.
使用OneWayToSource
绑定将Text
属性连接到后台组件上的属性.这样,您就不必进行任何工作来获取属性值 - 它已经提供给您的组件.