尝试根据用户选择启动线程

时间:2015-06-14 21:13:12

标签: c# multithreading

我有一个有很多选择的Combobox。用户选择的内容将他们带到案例陈述中。在这种情况下,选择的项目之一是字符串。现在这个字符串我想用来启动一个特定的函数线程。例如我有功能

    public void DoWorkAP(){}

和另一个

    public void DoWorkAG(){}

在组合框中,用户做出选择,案例statemtn将有一个名为sWhichWork的字符串,并设置为“DoWorkAG”或“DoWorkAP”

现在在UI代码中我有一个帖子

    Thread t = null;

当按下一个按钮时,会调用一个函数,在这个函数中我有

    t = new Thread(sWhichWork);


    t.Start();

这似乎很好,因为我想将sWhichWork替换为“DoWorkAG”或“DoWorkAP”,而是我得到

“无法从'string'转换为System.Threading.ParameterizedThreadStart'”

现在我拿出SWhichWorks并有以下

    t = new Thread(DoWorkAG); 


    t.Start();

这很好,因为它编译并带我到正确的地方。所以问题是如何从combox中选择一个变量字符串到案例stament将我带到同一个地方?

2 个答案:

答案 0 :(得分:0)

如果您只有两个选项,我会选择

t = new Thread(sWhichWork == "DoWorkAG" ? DoWorkAG : DoWorkAP);

这也可行:

t = new Thread(this.getType().GetMethod(sWhichWork).Invoke(this, new object[]));

答案 1 :(得分:0)

你只需打开线程:

var action = myComboBox.Text;
new Thread(() => {
 if (action == "1") F1();
 else F2();
});

超级简单。