使用异步启动并行进程

时间:2019-07-15 16:38:30

标签: c# .net async-await

使用控制台项目,我想将控制台窗口作为UI运行以查看和管理对象。同时,我想运行一个模拟过程,该过程会随着时间的流逝生成并处理对象,这些对象在控制台中进行管理。

我以为我可以使仿真过程异步,但是我意识到我不能真正异步地启动它,因为控制台项目的main方法不能是异步的。这行不通:

static async void Main(string[] args)
{}

那么应该如何使用异步启动并行线程?

1 个答案:

答案 0 :(得分:1)

如果您的异步方法返回一个Task,则可以使用Wait。这是Benjarmin Perkins的blog的示例:

static private async Task callWebApi()
{
  WebResponse response = await WebRequest
      .Create("http://**?**.azurewebsites.net/api/sleepy")
      .GetResponseAsync()
      .ConfigureAwait(false);;
  WriteLine(response.StatusCode.ToString());
}

public static void Main(string[] args)
{
  try
  {
    callWebApi().Wait();
  }
  catch (Exception ex)
  {
    WriteLine($"There was an exception: {ex.ToString()}");
  }
}