C#事件处理程序仅在触发两个或多个事件时触发

C#事件处理程序仅在触发两个或多个事件时触发,c#,events,design-patterns,event-handling,C#,Events,Design Patterns,Event Handling,这个问题以前有人问过,但没有答案。我也在同一条船上,想再次碰碰运气。这似乎是非常基本的 比方说,我有两个事件,一个事件是“按下某个键”,另一个事件是“数据到达”。我在其事件处理程序中处理“Data Arrized”事件以处理数据,我想在触发“某个按键按下”事件时做一些特殊的事情 处理此问题的一种方法是使用某种标志,该标志在“按下某个键”事件处理程序中设置。并在“数据到达”事件处理程序中检查该标志 我想知道是否有一种更优雅或标准的方式来处理必须触发两个或多个事件才能执行某个操作的情况 谢谢 如果您

这个问题以前有人问过,但没有答案。我也在同一条船上,想再次碰碰运气。这似乎是非常基本的

比方说,我有两个事件,一个事件是“按下某个键”,另一个事件是“数据到达”。我在其事件处理程序中处理“Data Arrized”事件以处理数据,我想在触发“某个按键按下”事件时做一些特殊的事情

处理此问题的一种方法是使用某种标志,该标志在“按下某个键”事件处理程序中设置。并在“数据到达”事件处理程序中检查该标志

我想知道是否有一种更优雅或标准的方式来处理必须触发两个或多个事件才能执行某个操作的情况


谢谢

如果您使用的是winforms,请务必注意表单事件(如单击事件)不会相互中断。现在,这取决于数据处理是否发生在同一个线程(UI线程)中。例如,如果您在另一个单击事件中开始处理数据,并且没有启动另一个任务或使用,则
DataArrived
事件也将在UI线程中发生。在这种情况下,将严格按顺序调用这些事件处理程序。旗帜方法将很好地发挥作用


否则,请参见:。对于多线程,您必须注意保护测试和更改标志的代码(例如使用)。

感谢@Olivier的建议。我接受了你的回答。目前,我只是坚持使用flag方法,目前它仍然有效。