控制多个线程的好方法

时间:2009-04-20 11:53:35

标签: c# vb.net multithreading

我有一个可以执行多项任务的MDI WinForms应用程序。每个任务都作为backgroundWorker运行。

控制正在运行的线程的好方法是什么:

  • 检查特定线程是否正在运行
  • 停止特定线程?

例如,不应该同时运行相同的任务。

可能我需要一个单独的类,我可以存储isTaskRunning变量吗?

这样做的好方法是什么?

TIA

1 个答案:

答案 0 :(得分:1)

您可以采取的一种方法是为每个任务创建一个类。然后让该类执行任务。它将知道是否可以同时使用多个任务,并限制对每个任务的访问。因此:

public class LongUploadTask
{
  private bool isRunning;


  public void Execute()
  {
    if(!isRunning)
    {
       //etc...
    }
  }
}

注意,如果您从多个线程访问此代码,我已经省略了锁定代码,我不认为您是这样。此外,如果您想异步执行此操作,可以使用异步委托和手动重置事件来实现BackgroundWorker正在执行的操作。