当前位置:  开发笔记 > 开发工具 > 正文

如何从WPF中的另一个线程读取textbox.Text值?

如何解决《如何从WPF中的另一个线程读取textbox.Text值?》经验,为你挑选了2个好方法。

在我的WPF表单中,我有一个文本框.
当计时器过去时,需要获取文本框的内容.
经过的计时器正在与UI不同的线程中工作.

问题有点双重:

从GUI线程交叉线程中读取值的最简单,最可读的方法是什么(我发现了几个并且它们看起来太冗长了什么应该是真正基本的东西)?

我不能以非阻塞的方式阅读文本吗?在这种情况下我不关心线程安全.

--EDIT--
我使用了Dispatcher,但是有一个更详细的调用,那么John有什么:

originalTextBox.Dispatcher.Invoke(
    DispatcherPriority.Normal, 
    (ThreadStart) delegate{text=originalTextBox.Text;}
);

不过甚至不介意.访问文本属性应该是完全基本的.



1> John Myczek..:

Oisin是对的,你需要看看Dispatcher.这样的事情应该有效,而且不是太冗长:

System.Windows.Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { text = MyTextBox.Text; });



2> Kent Boogaar..:

你可以:

使用它Dispatcher来安排从后台线程在UI线程上执行的消息.一DispatcherPrioritySend,会得到最快的响应可能的.

使用a DispatcherTimer在UI线程上定期执行消息.

使用OneWayToSource绑定将Text属性连接到后台组件上的属性.这样,您就不必进行任何工作来获取属性值 - 它已经提供给您的组件.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有