我的情况是我正在创建多个线程来执行一项工作。例如,您可以说“工作是处理一些数据”。现在,一旦用户按下“停止”按钮,我想中止所有这些线程并更新数据库中的作业状态。
internal void CreateJobThread(Job job)
{
Interlocked.Increment(ref _threadCounter);
ThreadPool.QueueUserWorkItem(StartJobThread, job);
}
StartJobThread 是正在执行工作的函数。
internal void StartJobThread(object input)
{
try
{
//Do something
}
catch (Exception ex)
{
//Catch exception
}
finally
{
Interlocked.Decrement(ref _threadCounter);
}
}
请让我知道如何取消当前正在运行的所有线程。以及如何获取正在进行的作业的 ID。这样我就可以更新他们在数据库中的状态。