【发布时间】:2019-02-07 02:54:39
【问题描述】:
我有一个使用 MEF 加载插件的应用程序。所有这些插件都符合以下接口:
public interface IPlugin {
Task Start();
}
所有方法都实现为async:public async Task Start()
当应用程序运行时,我有一个可用于所有插件的IEnumerable<IPlugin> 属性。问题基本上是如何并行运行所有Start() 方法并等到所有方法完成?
我知道Parallel.ForEach(plugins, plugin => plugin.Start()),但这不是等待的,在所有插件启动之前继续执行。
最有希望的解决方案似乎是Task.WhenAll(),但我不知道如何在不添加一些脚手架的情况下将未知的方法列表发送到其中(这似乎是开销)。
我怎样才能做到这一点?
【问题讨论】:
标签: c# async-await .net-core task task-parallel-library