中止ThreadPool中所有正在运行的线程并获取线程ID

时间:2015-11-02 05:12:27

标签: c# .net multithreading threadpool thread-abort

我的情况是我正在为执行一项工作创建多个线程。例如,您可以说" Job是处理一些数据。" 现在,一旦用户按下"停止"按钮,我想中止所有这些线程并更新数据库中的作业状态。

    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。这样我就可以在数据库中更新它们的状态。

0 个答案:

没有答案