Bor*_*ens 10 .net wpf multithreading
在我的WPF表单中,我有一个文本框.
当计时器过去时,需要获取文本框的内容.
经过的计时器正在与UI不同的线程中工作.
问题有点双重:
--EDIT--
我使用了Dispatcher,但是有一个更详细的调用,那么John有什么:
originalTextBox.Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart) delegate{text=originalTextBox.Text;}
);
Run Code Online (Sandbox Code Playgroud)
不过甚至不介意.访问文本属性应该是完全基本的.
Oisin是对的,你需要看看Dispatcher.这样的事情应该有效,而且不是太冗长:
System.Windows.Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { text = MyTextBox.Text; });
Run Code Online (Sandbox Code Playgroud)
你可以:
Dispatcher
来安排从后台线程在UI线程上执行的消息.一DispatcherPriority
的Send
,会得到最快的响应可能的.DispatcherTimer
在UI线程上定期执行消息.OneWayToSource
绑定将Text
属性连接到后台组件上的属性.这样,您就不必进行任何工作来获取属性值 - 它已经提供给您的组件.由于问题没有指定 C#,我想展示一个针对 VB.NET 的简单解决方案:
text = originalTextBox.Dispatcher.Invoke(Function() As String
Return originalTextBox.Text
End Function)
Run Code Online (Sandbox Code Playgroud)