AWAIT/ASYNC后台工作人员返回列表的示例

本文关键字:列表 返回 工作人员 ASYNC 后台 AWAIT | 更新日期: 2023-09-27 18:29:11

我看到了如何在新的4.5框架中使用AWAIT/ASYNC的一般示例,但没有关于如何用新的构造来代替后台工作程序的使用的具体指导方针,这些构造反过来不会从.net框架中调用任何可调用的方法。在不使用lambda表达式的情况下,如何才能返回List?如果main()是UI线程(请原谅psudocode),我想用下面的方法来释放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>;
}

AWAIT/ASYNC后台工作人员返回列表的示例

您之所以没有看到将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>;
}

我目前正在我的博客上浏览一系列关于用Task.Run替换BackgroundWorker的内容,你可能会觉得这很有帮助。