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

时间:2014-08-05 19:26:32

标签: c# multithreading asynchronous parallel-processing console

在没有应用程序终止于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");

提前谢谢你。

1 个答案:

答案 0 :(得分:6)

您应该致电Wait()中最外层异步方法返回的Task上的Main()

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

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