请问C#中,事件处理例程是如何打断正常执行的程序流的?

时间:2022-08-30 22:54:28

  比如下面程序段,

  //正常程序流
  Console.WriteLine("ABCD")   ----Line1
  Console.WriteLine("DEFG")   ----Line2
  Console.WriteLine("HIJK")   ----Line3
  Class1.MethodA(a)           ----Line4
  ...
  ...
  //事件处理方法
  private int Task_Exit()     ----Line90
  {
  ...
  }

   通过调试发现:

    在执行Line1时,可以断定其实事件TaskExit已经发生,但是系统暂时并不打断正常的程序流,而是这样一直执行到将要执行Line4时,系统才会打断正常的执行,跳到Line90调用事件处理函数Task_Exit()。

    我的问题是,既然事件已经发生,为什么要等到执行到LINE4时才中断转而执行事件处理方法,为什么Console.WriteLine这种方法系统不会打断它的执行,而Class1.MethodA(a)却被暂时打断,这中间有什么规则呢?

    

5 个解决方案

#1


切换线程需要时间

#2


觉得是.net framework 的一种性能优化的手段?

#3


你最好查看一下IL.

#4


你把你的完整一点的代码贴上来看看

#5


看看你的代码?

#1


切换线程需要时间

#2


觉得是.net framework 的一种性能优化的手段?

#3


你最好查看一下IL.

#4


你把你的完整一点的代码贴上来看看

#5


看看你的代码?