我们有一个方法,由于客户端应用程序中的线程,它需要使用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的请求的服务中。
这似乎是确保我们不会出现跨线程错误的一种可接受的方法吗?如果没有,是否有更好的解决方案?
谢谢