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

2024-01-08

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

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Invoke 和 SynchronizationContext.Post 对象有什么区别? 的相关文章

随机推荐