暂停线程

时间:2010-12-31 20:07:15

标签: c# multithreading

我正在使用以下代码来创建和执行线程我需要停止它但是看不到线程.Sleep

任何想法我怎么能在那里暂停执行呢?

var t = new Thread(() =>
{
try
   {
           //Line 1
             Pause here
           //Line 2
             Pause here
           //Line 3
   }
   catch (Exception ca)
   {
          MessageBox.Show(ca.Message);
   }
   });
   t.SetApartmentState(ApartmentState.STA);
   t.Start();

5 个答案:

答案 0 :(得分:5)

如果您想要指示Thread在特定检查点等待,直到某个其他Thread告诉它继续,那么一个好的选择是使用AutoResetEvent

答案 1 :(得分:4)

  t.SetApartmentState(ApartmentState.STA);

我会假设这是故意的。您要做的事情,以满足STA合同。你来抽取一个消息循环,调用Application.Run()。并且你无法暂停,阻止任何编组调用并且很可能发生死锁。

没问题,当你输入一个消息循环时,你总是处于空闲的“暂停”状态。使代码运行正如您在GUI主线程中通常所做的那样。 Application.ExitThread结束线程。

答案 2 :(得分:0)

在委托中使用静态方法Thread.Sleep(int)

http://msdn.microsoft.com/en-us/library/d00bd51t.aspx

暂停当前线程达到指定时间。

答案 3 :(得分:0)

您在寻找System.Threading.Thread.Sleep()方法吗?

答案 4 :(得分:0)

在代码顶部添加此行:

using System.Threading;

然后你可以看到Thread.Sleep()