WindowsFormsSynchronizationContext在Post上锁定了很长时间

时间:2011-09-19 09:17:22

标签: .net winforms .net-4.0 thread-safety

我一直在查看与 WindowsFormsSynchronizationContext 异步发布的延迟/锁定,并发现这使用 Control.MarshaledInvoke 方法,该方法内部有两个锁!由于 SynchronizationContext 使用全局控件( Application.MarshalingControl ),因此在使用此锁定时,实际上会产生吞吐量限制。

有些事情,我们多次见证会导致很长时间的延误,例如当通过远程桌面连接到机器时,控件会长时间锁定。

我的问题是,有没有人遇到过这个问题?还有任何解决方案的建议吗?

我正在考虑使用Task.Run将实际的Post放在线程池上......但这会产生额外的开销。我们主要关心的是异步的线程发布不应该长时间锁定> 1毫秒,所以我想把动作放在任务上会起作用,但这也引入了GC的压力。

0 个答案:

没有答案