假设我们有一些方法可以做一些大工作。
最初我们不知道有多少方法(可以是 1 也可以是 10 )。
在代码中,这看起来像这样:
public interface IWorker
{
void DoWork(DataContainer data);
}
还有几个实现这个接口的类。然后我们有实例列表。
List<IWorker> workers = new List<IWorker>();
我想异步运行这些方法。另外,当所有这些都被执行时,我想要一些回调。
public void Callback()
{
Console.WriteLine("everything done");
}
有没有办法在不编写自定义包装器的情况下做到这一点?使用线程池、任务、并行?
据我所知,并行阻塞线程直到任务完成,所以这不是一个优先行为。
正如我所见,创建任务时应该有没有参数的方法,所以这也不好。
在 ThreadPool 中可以使用方法 QueueUserWorkItem,但使用这种方法我不会得到一个“完全完成”回调。
当然,我可以制作自己的包装器,该包装器将使用 ThreadPool 实现所需的功能,但目标是在不编写此类的情况下实现这一点。
有人可以帮忙吗?谢谢。