我有不同的场景,与 this question 中的场景不同,因此还有一个问题。
让我们看下面的例子:
void PerformanceCriticalMethod()
{
Dispatcher.Invoke(() => Log.Add("1"));
... some job
Dispatcher.Invoke(() => Log.Add("2"));
}
Invoke
会产生性能问题。为了尝试修复它,我使用 InvokeAsync
代替 Invoke
,它似乎可以工作,但重要的是 2
将在 1
之后输出。
我可以假设如果从同一个线程调用两个 InvokeAsync
它们将以相同的顺序执行吗?我的 winapi 的坚果告诉我这是真的,但我想确定一下。
另一个相关问题与链接问题相同:如果通过不同线程的 InvokeAsync
操作调用相同的方法,那么调用 InvokeAsync< 的线程首先执行该方法的机会有多大
更早?
P.S.:我感觉问题应该改写为“InvokeAsync 的工作原理”,但“顺序”一词可能 100% 是人们(包括我)会尝试搜索的内容。
最佳答案
请检查一下 http://referencesource.microsoft.com/#WindowsBase/Base/System/Windows/Threading/Dispatcher.cs,1045
当您调用 InvokeAsync 时,一个操作会被放入 PriorityQueue 中,因此我想如果您调用多个具有相同优先级的操作,您可以确信这些操作将以相同的顺序执行。
关于c# - 调用异步订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32778051/