快速C#线程类

yyy*_*ykk 2 c# multithreading

有一个关于创建C#线程的快速问题.

  • 它需要每10分钟运行一次
  • 工人将工作,然后再睡10分钟
  • 也可以通过调用Trigger()来触发它立即运行
  • 它可以通过调用Stop()来停止

我用ManualResetEvent创建了一个,它在调用Stop()时设置.这很好但是我需要创建另一个ManualResetEvent或wait句柄才能立即触发工作者吗?

Hen*_*man 7

如果停止你的意思是停止等待而不再运行那么我认为Threading.Timer将是一个很好的(精益)选择.

您可以使用DoWork()方法和10分钟间隔激活计时器.它将使用ThreadPool,这似乎是最好的选择.Trigger()可以直接在Pool上排队DoWork,Stop()可以取消激活Timer.DoWork()不应该使用Sleep()并且适合ThreadPool.