我有一个可以执行多项任务的MDI WinForms应用程序。每个任务都作为backgroundWorker运行。
控制正在运行的线程的好方法是什么:
例如,不应该同时运行相同的任务。
可能我需要一个单独的类,我可以存储isTaskRunning变量吗?
这样做的好方法是什么?
TIA
答案 0 :(得分:1)
您可以采取的一种方法是为每个任务创建一个类。然后让该类执行任务。它将知道是否可以同时使用多个任务,并限制对每个任务的访问。因此:
public class LongUploadTask
{
private bool isRunning;
public void Execute()
{
if(!isRunning)
{
//etc...
}
}
}
注意,如果您从多个线程访问此代码,我已经省略了锁定代码,我不认为您是这样。此外,如果您想异步执行此操作,可以使用异步委托和手动重置事件来实现BackgroundWorker正在执行的操作。