C#console app,异步方法,在任务完成之前返回.

use*_*110 0 c# parallel-processing console multithreading asynchronous

有没有办法在控制台应用程序中使用tasks/await而应用程序终止于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");
Run Code Online (Sandbox Code Playgroud)

先感谢您.

SLa*_*aks 6

你应该叫Wait()Task从您最异步方法返回Main().

这通常是一个可怕的想法,但在控制台应用程序中,这正是您强制代码等待异步完成的方式.

你不应该async void在任何地方使用.