c#控制台应用程序,异步方法,在任务完成之前返回
本文关键字:返回 控制台 应用程序 异步方法 任务 | 更新日期: 2023-09-27 18:16:26
是否有办法在控制台应用程序中使用tasks/await而不会在await语句时终止应用程序?以下内容不在main方法中。它在一个单独的班级里。Main调用它。我研究了一下,看到了一篇关于使用manualreseevent的文章,但是当我尝试将这个逻辑插入到这个类中时,它并没有产生什么不同,它永远不会超出await。它刚刚关闭。
Task Taskone = Task.Run(() => (threadOne.checkData(numberArray,archivePath,dirone,dirtwo, ref missingoneList)));
Task Tasktwo = Task.Run(() => (threadTwo.checkAll(numberArray, archivePath, dirone, dirtwo, ref missingtwoList)));
Task Taskthree = Task.Run(() => (threadThree.checkCnt(numberArray, archivePath, dirone, dirtwo, ref missingthreeList)));
await Task.WhenAll(Taskone,Tasktwo,Taskthree);
Console.WriteLine("all tasks have completed");
提前谢谢你。
您应该在Main()
中最外层的异步方法返回的Task
上调用Wait()
。
这通常是一个可怕的想法,但在控制台应用程序中,这正是你强迫代码等待异步完成的方式。
你不应该在任何地方使用async void