2012-03-18 46 views
0

我有一个下拉列表,并且有一个辅助线程,在该辅助线程中我必须获取该下拉列表的选定值。它总是返回null或空字符串。有没有办法在次要字符串中获得它的价值?在辅助线程中获取下拉列表选择

+0

发送/前得到的值启动线程。 – Aristos 2012-03-18 11:25:02

回答

1

UI元素由UI线程拥有。切勿尝试访问甚至修改这些,因为这不是安全操作。在创建线程时将线程的下拉值传递给线程,并在第二个线程中使用复制的值。

实施例:

static void Main(string[] args) 
{ 
    System.Threading.Thread myThread = new System.Threading.Thread(asyncCode); 
    myThread.Start(yourParameterObject); 
} 

static void asyncCode(object parameters) 
{ 
    // Use the parameters passed 
} 
+0

如何将值传递给新线程?我使用Thread backgroundThread = new Thread(MyMethod),它接收方法名称作为参数,但方法本身必须不带参数。谢谢。 – 2012-03-19 10:31:46

+0

谢谢你的补充。然而,从我读到的,只能发送一个参数(除非可能它们是作为数组或列表发送的,这可能吗?)。我发现另一个使用lambda表达式的选项:Thread t = new Thread(()=> asyncCode(param1,param2)); static void asyncCode(int param1,string param2){//使用传递的参数} – 2012-03-19 13:33:25

+1

@DovMiller:你可以传递的参数是object类型的,因此你可以传递任何派生自object的类型。您可以创建一个包含多个参数作为属性的类。 – CodeZombie 2012-03-19 23:59:34