【发布时间】:2009-07-09 14:04:55
【问题描述】:
我们有一个方法,由于客户端应用程序中的线程需要使用 SynchronizationContext。
我的一位同事编写的一些代码对我来说“感觉”不正确,性能分析器告诉我,在这段代码中使用了很多处理。
void transportHelper_SubscriptionMessageReceived(object sender, SubscriptionMessageEventArgs e)
{
if (SynchronizationContext.Current != synchronizationContext)
{
synchronizationContext.Post(delegate
{
transportHelper_SubscriptionMessageReceived(sender, e);
}, null);
return;
}
[code removed....]
}
这对我来说感觉不对,因为我们基本上将相同的请求发布到 gui 线程事件队列......但是,除了这部分代码的性能之外,我也看不出任何明显的问题。
此方法是附加到由我们的中间层消息传递层帮助程序 (transportHelper) 引发的事件的事件处理程序,它存在于处理来自 GUI 的请求的服务中。
这似乎是一种可以接受的确保我们不会出现跨线程错误的方法吗?如果没有,有没有更好的解决方案?
谢谢
【问题讨论】:
标签: c# multithreading synchronization ynchronizationontext