0

我已经看到了如何将 AWAIT/ASYNC 与新的 4.5 框架一起使用的一般示例,但没有关于如何用不反过来调用 .net 框架中的任何可等待方法的新构造替换后台工作程序的使用的具体指导方针。如何在不使用 lambda 表达式的情况下这样做,以便返回 List?如果 main() 是 UI 线程,我正在考虑类似以下的内容来释放 UI(请原谅伪代码)

main()
{
      List<string> resultSet = await CreateList(dirPath);
      console.out(resultSet.ToString());
}

public async List<string> CreateList(string dirPath);
{
     //do some work on dirPath NOT CALLING ANY ASYNC methods 
     return LIST<STRING>;
}
4

1 回答 1

3

您没有看到使用async同步代码的示例的原因是因为async异步代码。

也就是说,您可以Task.Run用作BackgroundWorker. Task.Run使您能够获取同步代码并以异步方式使用它:

main()
{
  List<string> resultSet = await Task.Run(() => CreateList(dirPath));
  console.out(resultSet.ToString());
}

public List<string> CreateList(string dirPath);
{
  //do some work on dirPath NOT CALLING ANY ASYNC methods 
  return LIST<STRING>;
}

我目前正在我的博客上浏览关于替换BackgroundWorkerTask.Run的系列,您可能会发现它有帮助。

于 2013-08-27T06:05:18.273 回答