我有很多次性能问题是由 C# 事件处理程序花费比预期更长的时间引起的,在执行时有效地阻塞了工作线程。
从那时起,我总是将事件编码为异步运行(使用BeginInvoke
),而不首先考虑它是否是绝对必要的。
这种方法有什么缺点吗(除了轻微的性能影响)?在哪些情况下需要在同一个线程上运行事件(除了在等待结果时要阻塞的明显情况)?一定有一些原因为什么它不是默认行为。
我有很多次性能问题是由 C# 事件处理程序花费比预期更长的时间引起的,在执行时有效地阻塞了工作线程。
从那时起,我总是将事件编码为异步运行(使用BeginInvoke
),而不首先考虑它是否是绝对必要的。
这种方法有什么缺点吗(除了轻微的性能影响)?在哪些情况下需要在同一个线程上运行事件(除了在等待结果时要阻塞的明显情况)?一定有一些原因为什么它不是默认行为。