控制台、Windows窗体和WPF之间的SynchronizationContext有什么不同? &g



我理解任务只是异步执行的抽象。在幕后,运行时仍然必须开发使代码异步运行的方法。我知道有不同的实现,这取决于运行我们代码的应用程序的类型:例如,在asp.net中,它似乎每个任务创建一个线程,并与HTTP请求相关联。另一方面,控制台应用程序只是在线程池中运行任务(如果我有错误的理解,请纠正)。

我理解那些不同的实现是同步上下文。我错了或太模糊的变化是高的。我想了解不同应用程序之间的各种SynchronizationContext差异。

我很惭愧地说,我已经使用。net很多年了,但我仍然不理解SynchronizationContext。我也有一种感觉,很多人都不这样做。我读了大量的文章和官方文件,但都没有发现。我读了关于这个主题的大部分文章,但我对这件事仍然有困难。

很久以前,我一直被同样的问题困扰着。不幸的是,我没有机会自己找到一个明确的答案,因为我没有深入研究它的冲动——只是我的好奇心,所以它就在我的积压中沉没了。

这里有一些对我有帮助的链接。我不确定您是否已经遇到过它们,但我希望这对您有所帮助:

解释这个东西是什么并编写自己的示例的三部分系列:https://www.codeproject.com/Articles/31971/Understanding-SynchronizationContext-Part-I, https://www.codeproject.com/Articles/32113/Understanding-SynchronizationContext-Part-II, https://www.codeproject.com/Articles/32119/Understanding-SynchronizationContext-Part-III

我在async/await的背景下探索它,所以也许这篇关于它的博客文章也可以帮助你:https://devblogs.microsoft.com/oldnewthing/20170720-00/?p=96655(它也包含一个有用的链接:https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronous-programming-pause-and-play-with-await)。

p。我知道这仅仅是一个答案,所以我把它贴在评论里,但是符号限制会让它成为一个噩梦。我希望有人能在这里给出一个明确的答案,因为我对这个话题也很感兴趣:)

最新更新