在按钮单击完成另一个完成后运行一个线程

时间:2012-12-23 20:13:02

标签: c# winforms multithreading textbox buttonclick

我想在一个按钮点击中组合2个不同的按钮点击事件。我在这两个按钮单击事件中有两个线程来更新winform中的文本框。当我尝试组合这两个按钮时,线程同步运行但我需要在thread1完成后运行thread2。我怎样才能做到这一点?我尝试执行thread1.start而不是thread2.start,但它不起作用,因为所有click事件都会立即执行。有人帮我吗?感谢。

2 个答案:

答案 0 :(得分:4)

你可以这样做

new Thread(() =>
    {
        Method1();
        Method2();
    }).Start();

或更好地使用TPL

Task.Factory.StartNew(() => Method1())   
            .ContinueWith(t => Method2());

答案 1 :(得分:2)

.Net 4: 如果您使用的是.net 4或更高版本,请查看任务,尤其是ContinueWith method。这是一种更加统一的方法,效果要好得多。

.Net 1-3.5: 如果您自己已经在管理线程,那么最好的办法就是只有一个线程。

new Thread(DoJob1And2).Start()

方法定义为:

void DoJob1And2()
{
   try
   {
       Job1();
   }
   finally
   {
       Job2();
   }
}

void Job1()
{
   // Do job 1
}

void Job2()
{
   // Do job 2
}