在没有应用程序终止于await语句的情况下,有没有办法在控制台应用程序中使用tasks / await?以下不在主要方法范围内。它属于一个单独的类。主叫它。我研究了一下,看了一篇关于使用manualresetevent的文章,但是当我尝试将这个逻辑插入到这个类中时,它没有什么区别,它永远不会超越等待。它刚关闭。
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");
提前谢谢你。
答案 0 :(得分:6)
您应该致电Wait()
中最外层异步方法返回的Task
上的Main()
。
这通常是一个可怕的想法,但在控制台应用程序中,这正是您强制代码等待异步完成的方式。
您不应该在任何地方使用async void
。