如何从ThreadPool.QueueUserWorkItem获取进度报告

时间:2012-07-19 15:13:59

标签: c# .net threadpool

我有List<MyClass>个N个项目。我使用以下代码进行处理

foreach (var item in myList)
{
    ThreadPool.QueueUserWorkItem(DoWorkWithItem, item);
}

private void DoWorkWithItem(object threadContext)
{
   ///...
}

但是我需要获取报告哪些项目被处理,我可以在哪里获得一个事件或什么来执行此任务

1 个答案:

答案 0 :(得分:0)

创建事件并在威胁迭代完成后调用它,如下所示:

public class ClassWithDelegate
{
    public delegate void ProgressReportEventHandler();
    public static ProgressReportEventHandler ProgressReport { get; set; };

    private void DoWorkWithItem(object threadContext)
    {
       // angry code

       if (ProgressReport != null)
          ProgressReport();
    }
}

public class Subscriber
{
    public Subscriber()
    {
         ClassWithDelegate.ProgressReport += ProgressReport;         
    }

    public void ProgressReport()
    {
        //todo
    }
}

或使用BackgroundWorker,它有此事件