如何多个C#任务工厂

时间:2016-04-27 12:58:51

标签: c# task

这是C#代码

app.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
app.MapSignalR(hubConfiguration);

CpuEngine cpuEngine = new CpuEngine(1500);
MemoryEngine memoryEngine = new MemoryEngine(1500);
// Task.Factory.StartNew(async () => await cpuEngine.StartCpuCheck());
// Task.Factory.StartNew(async () => await memoryEngine.StartCheckMemory());

只有第一个正在运行。我怎么能互相跑?

1 个答案:

答案 0 :(得分:0)

1)改为使用Task.Run。 2)删除lambda中的关键字asyncawait。 3)使用Task.WhenAll并传递两个任务。

public async Task InvokeAsync()
{
    var cpuEngine = new CpuEngine(1500);
    var memoryEngine = new MemoryEngine(1500);

    await Task.WhenAll(
        Task.Run(() => cpuEngine.StartCpuCheck()),
        Task.Run(() => memoryEngine.StartCheckMemory()));        
}