0

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

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

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

但我需要报告处理了哪些项目,我可以在哪里得到一个事件或这个任务的东西

4

1 回答 1

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,它有这个事件

于 2012-07-19T15:23:31.837 回答