因为.Net的exe活dll文件并不是真正的CPU可识别的二进制机器码,而是一种称为中间语言,.Net使用了JIT即时编译技术,在第一次运行的exe或dll时候,把他们编译成机器码,所以第一次运行会比较慢,但以后都很快了。

解决方案 »

  1.   

    对,FJGoodGood(_FJ_强中强) 说得好!第一次运行程序时,.exe文件被 JIT即时编译 为本机机器码,它被缓存到本机上,
    当第二次运行时,运行时先会缓存中去寻找,若找到了,就不用再编译一次,
    所以么,以后运行将就快了!!
      

  2.   

    大家误会我的意思了,每次运行都是这样的现象:就是第一次往TEXTBOX输入数字的时候机器反映速度很慢,但是继续输入速度就快了许多。而不是第一次启动速度慢,以后启动速度快,我这个程序很小的,看不出来这里的异常!!
      

  3.   

    是不是你输入第一个字符的时候,因为输入框的文本是空串,那么GetValue函数内部作Int32.Parse时,会出异常,虽然被catch住了,但是映象中第一次异常时总会慢一些,以后就快了,可能期间.Net又Load了些Assembly吧。为了验证这种想法,楼主可否在所有的 TextBox 里,先放置一些数字,比如0,编译后,再按你上述操作过程操作一次,看看是不是快了一些~~~
      

  4.   

    试试FJGoodGood(_FJ_强中强)的
      

  5.   

    试了,快多了,没有任何停顿,谢谢 FJGoodGood(_FJ_强中强) 还想问问,为什么第一次出现异常速度会慢哪?
      

  6.   

    ...可能期间.Net又Load了些Assembly吧...
      

  7.   

    Because .NET use very late binding....Classes that are never used are also never loaded into memory. But when they finally needed then CLR needs time to load and initialize them. In case of unhandled exception CLR needs additional time to collect information for use in debbuger (and to show up a message).But in your case I will rather blame JIT compiler for that delay...
    (haven't looked at your project too..  ) You can try to sign assembly and use ngen.exe (and gacutil)- i think its worth try.
      

  8.   

    为什么我直接运行
    bin\Debug\cs_TextBox.exe 
    obj\Debug\cs_TextBox.exe
    速度非常快。如果在.net编译器MS2003下运行速度竟然是如此的慢(尤其是第一次出现异常的时候)?