从线程中的GUI对象检索属性

时间:2010-09-29 00:54:18

标签: c# .net winforms multithreading

我有一个执行线程的C#程序。在这个帖子里面,我有以下代码:

string strDropDownValue = (string)ddlVersion.SelectedItem;

我正在尝试从下拉列表中检索所选值。显然,这条线在单线程应用程序中有效。因为我从一个线程做这个,我在运行时得到一个跨线程异常。我知道如果我想从线程更改GUI对象的值,我需要使用InvokeRequired()和Invoke()。但是,如果我只想读取属性值,该怎么办?我还需要Invoke()吗?我试图寻找解决方案,但找不到一个例子。我找到的所有示例都显示了如何设置属性,而不是如何读取它。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

是的,你仍然需要调用,并从UI线程的控件中拉出字符串。然后,您可以通过某个同步变量或类似的东西将其传递回您的其他线程。

话虽如此,通常情况下,您会在启动后台线程之前将信息从控件中拉出,然后将其传递给后台线程。这就是为什么,我怀疑,你没有找到很多代码来展示如何实现这一目标。