gpt4 book ai didi

c# - ConfigureAwait(true) 没有返回等待它的上下文

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:35 24 4
gpt4 key购买 nike

示例:

 static void Main(string[] args)
{
int counter = 0;
var t = new System.Timers.Timer();
t.Interval = 3000;
t.Elapsed += async (sender, e) =>
{
Debug.WriteLine("Before await - Thread : {0} , Counter : {1}", Thread.CurrentThread.ManagedThreadId, counter);
await Task.Delay(1000).ConfigureAwait(true);
Debug.WriteLine("Ater await Thread : {0}, Counter : {1} ", Thread.CurrentThread.ManagedThreadId, counter);

counter++;
if (counter == 2)
{
Debug.WriteLine("Stop");
t.Stop();
}
};

t.Start();

Console.ReadKey();
}

这总是输出:

 Before await - Thread : 4 , Counter : 0 
Ater await Thread : 4, Counter : 0
Before await - Thread : 5 , Counter : 1
Ater await Thread : 4, Counter : 1

Stop

为什么它没有在调用 await 的线程上返回。它第一次执行,但随后计时器在线程 5 上运行,并且假定捕获异步操作结束时的上下文,正如您所看到的,它在线程 4 上返回。

最佳答案

控制台应用程序中没有任何同步上下文。

如果您在 WinForms 中运行您的代码,您会发现它会按预期工作..

关于c# - ConfigureAwait(true) 没有返回等待它的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com