我有一个List<MyClass>
有 N 个项目。我使用以下代码处理
foreach (var item in myList)
{
ThreadPool.QueueUserWorkItem(DoWorkWithItem, item);
}
private void DoWorkWithItem(object threadContext)
{
///...
}
但我需要报告处理了哪些项目,我可以在哪里得到一个事件或这个任务的东西
我有一个List<MyClass>
有 N 个项目。我使用以下代码处理
foreach (var item in myList)
{
ThreadPool.QueueUserWorkItem(DoWorkWithItem, item);
}
private void DoWorkWithItem(object threadContext)
{
///...
}
但我需要报告处理了哪些项目,我可以在哪里得到一个事件或这个任务的东西
创建事件并在威胁迭代完成后调用它,如下所示:
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
,它有这个事件