我的类A本身没有多线程设计,其中有两个函数将由类B中的两个事件触发执行。
首先类B的事件1引发了类A的函数1执行,但在类A函数1尚未执行完毕的情况下,类B的事件2被触发了。那么此时,问题1:是类A的函数2必须等到函数1执行完毕后再执行,还是函数2立刻开始执行?
问题2:如果函数2是立刻开始执行,那么尚未执行完毕的函数1是被强行中止,还是.Net自开多线程同时执行两函数?请有明确答案的朋友回答,并请说明简单依据。

解决方案 »

  1.   

    问题1:是类A的函数2必须等到函数1执行完毕后再执行,还是函数2立刻开始执行? 
       按一般的情况来说,如果函数1没有执行完毕是不能执行函数2的,但这并不一定,如果函数1中有可让CUP执行其它任务的方式存在,比如Application.DoEvents()方法,或是Thread.Seelp()方法,则可能函数2有机会立刻执行。
    如果是一般的方法,比如函数1中是一个死循环,这个时候从界面上来说,程序处于“死机”状态,函数2不可能被事件触发。
    问题2:如果函数2是立刻开始执行,那么尚未执行完毕的函数1是被强行中止,还是.Net自开多线程同时执行两函数? 
      如果函数2开始执行,那么相当于是两个线程在执行,不会强制使1终止,但如果在函数2中有对1终止的方法例外。以上是个人认为。
      

  2.   

    谢谢,你提到的Application.DoEvents和Thread.Seelp忽然使我想到可以改变一下思路,增加程序可靠性。结帐。