【发布时间】:2009-04-20 11:53:35
【问题描述】:
我有一个可以执行多项任务的 MDI WinForms 应用程序。每个任务都作为 backgroundWorker 运行。
控制运行线程的好方法是什么:
- 检查特定线程是否正在运行
- 停止特定线程?
例如,不能同时运行同一个任务。
我可能需要一个单独的类来存储 isTaskRunning 变量吗?
如何做到这一点的好方法?
TIA
【问题讨论】:
标签: c# vb.net multithreading
我有一个可以执行多项任务的 MDI WinForms 应用程序。每个任务都作为 backgroundWorker 运行。
控制运行线程的好方法是什么:
例如,不能同时运行同一个任务。
我可能需要一个单独的类来存储 isTaskRunning 变量吗?
如何做到这一点的好方法?
TIA
【问题讨论】:
标签: c# vb.net multithreading
您可以采取的一种方法是为每个任务创建一个类。然后让那个班级执行任务。它将知道是否可以一次使用多个任务,并限制对每个任务的访问。因此:
public class LongUploadTask
{
private bool isRunning;
public void Execute()
{
if(!isRunning)
{
//etc...
}
}
}
请注意,如果您从多个线程访问它,我将省略锁定代码,我认为您不是。此外,如果您想异步执行此操作,您可以使用异步委托和手动重置事件来实现 BackgroundWorker 正在执行的操作。
【讨论】: