什么时候C#事件应该同步运行?
我曾多次指出,性能问题是由于C#事件处理程序花费的时间比预期的要长,从而在执行时有效地阻塞了工作线程 从那以后,我总是将事件编码为异步运行(使用什么时候C#事件应该同步运行?,c#,multithreading,performance,events,asynchronous,C#,Multithreading,Performance,Events,Asynchronous,我曾多次指出,性能问题是由于C#事件处理程序花费的时间比预期的要长,从而在执行时有效地阻塞了工作线程 从那以后,我总是将事件编码为异步运行(使用BeginInvoke),而不考虑是否严格需要 这种方法是否有任何缺点(除了性能受到的轻微影响)?在哪些情况下需要在同一个线程上运行事件(除了在等待结果时要阻塞的明显情况)?它不是默认行为肯定有一些原因。异步性的任何缺点都适用于您的方法。如果在UI上下文中,并且您在事件处理程序中更改了UI,那么您也会遇到问题。很抱歉,对于堆栈溢出,不建议使用此类开放式问
BeginInvoke
),而不考虑是否严格需要
这种方法是否有任何缺点(除了性能受到的轻微影响)?在哪些情况下需要在同一个线程上运行事件(除了在等待结果时要阻塞的明显情况)?它不是默认行为肯定有一些原因。异步性的任何缺点都适用于您的方法。如果在UI上下文中,并且您在事件处理程序中更改了UI,那么您也会遇到问题。很抱歉,对于堆栈溢出,不建议使用此类开放式问题。请参阅常见问题解答:@SpikeX我认为这个问题符合它所说的“编程专业特有的实用、可回答的问题”@SpikeX这不是无限期的。我只是问为什么异步不是.Net中的默认值?嗯,在大多数情况下,它确实是不需要的。BeginInvoke仍将在主线程中运行事件。