Yug*_*dhu 0 c# asynchronous async-await
嗨,我是异步编程的新手。我正在观看 YouTube 视频来学习。如果使用则停止Task.Run
工作。Thread.Sleep
class App
{
public static void Main(string[] args)
{
Console.WriteLine("app started");
AsTask();
Console.WriteLine("app Stopped");
}
public static async void AsTask()
{
Console.WriteLine("outside await");
await Task.Run(() =>
{
Console.WriteLine("Inside asyn fun");
Thread.Sleep(1);
Console.Write("async Task Started");
Console.Write(" # Task Completed");
Console.WriteLine();
});
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
如果使用 thread.sleep,Task.Run 将停止工作。
不,事实并非如此。
但是,您不会等待方法中的任务完成Main
- 您的异步方法返回void
而不是 a Task
,因此您基本上是在说“开始做事情,我不在乎它何时完成。” 当您的Main
方法完成时,进程就会完成 - 线程池(您的任务将在其中执行)使用“后台”线程,因此它们不会阻止进程完成。
如果您想等到异步方法实际完成,您应该更改此设置:
public static async void AsTask()
Run Code Online (Sandbox Code Playgroud)
到
public static async Task AsTask()
Run Code Online (Sandbox Code Playgroud)
...并使您的Main
方法异步,以便它可以等待任务:
public static async Task Main(string[] args)
{
Console.WriteLine("app started");
await AsTask();
Console.WriteLine("app Stopped");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
205 次 |
最近记录: |