gpt4 book ai didi

c# - 使用 Invoke 和 SynchronizationContext.Post 对象有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 22:13:51 25 4
gpt4 key购买 nike

当我收到与线程上下文相关的异常时,我使用委托(delegate)函数并调用该委托(delegate)函数。有必要使用来自其他线程的控制。但我刚刚了解到我可以使用 SynchronizationContext.Post() 函数,并且可以在此方法中调用我的委托(delegate)。

我不确定哪个更好?这些方法有什么区别?

最佳答案

是同一件事,SynchronizationContext.Post() 调用 BeginInvoke() 和 Send() 调用 Invoke()。

SynchronizationContext 的关键属性是它的实现不止一种。重要的是 WindowsFormsSynchronizationContext,它使用 Control.Begin/Invoke 和 DispatcherSynchronizationContext,它使用 Dispatcher.Begin/Invoke。还有其他用于 ASP.NET、Windows 应用商店(又名 WinRT、又名通用)应用程序、COM+ 托管的进程外服务器等。

额外的间接级别有助于避免依赖调用的特定 方法。当然对任何类库都很重要。

关于c# - 使用 Invoke 和 SynchronizationContext.Post 对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21778078/

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