C# 控制台程序验证await立即返回
生活随笔
收集整理的這篇文章主要介紹了
C# 控制台程序验证await立即返回
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
class Program{
public static volatile bool flag = true;
public static void Main()
{
Action a = null;
Thread t = new Thread(() =>
{
Console.WriteLine("before:" + Thread.CurrentThread.ManagedThreadId);
while (flag)
{
a?.Invoke();
}
Console.WriteLine("return:"+Thread.CurrentThread.ManagedThreadId);
});
t.Start();
Console.WriteLine("輸入c");
var s=Console.ReadLine();
if (s == "c")
{
a += TestAsync;
}
Console.ReadLine();
}
public static async void TestAsync()
{
await System.Threading.Tasks.Task.Delay(1);
flag = false;
Console.WriteLine("after"+ Thread.CurrentThread.ManagedThreadId);
}
}
output:
```c#
輸入c
before:3
c
after8
after12
return:3
after9
after9
解讀:
當輸入c后,立即返回,打印出"return:3",這里也可以看到立即返回后的線程ID與before:3的ID是一樣的,更加確認是返回到了原來的線程,而flag在及時改為false之前,while循環持續進行,并調用TestAsyn,可以發現返回后的線程并不是原來的線程。
總結
以上是生活随笔為你收集整理的C# 控制台程序验证await立即返回的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codeup之C语言10.1+C语言10
- 下一篇: Manus爆火,我发现平替开源项目Ope