isposePatternÏàͬ } finally { base.Dispose(disposing); } } } } µ±È»£¬Èç¹ûDerivedClass±¾ÉíûÓÐʲô×ÊÔ´ÐèÒªÇåÀí£¬ÄÇô¾Í²»ÐèÒªÖØдDispose·½·¨ÁË£¬ÕýÈçÎÒÃÇƽʱ×öµÄһЩ¶Ô»°¿ò£¬ËäÈ»¶¼ÊǼ̳ÐÓÚSystem.Windows.Forms.Form£¬µ«ÎÒÃdz£³£²»ÐèҪȥÖØд»ùÀàFormµÄDispose·½·¨£¬ÒòΪ±¾ÉíûÓÐʲô·ÇÍйܵÄßËßËÐèÒªÊÍ·Å¡£ Á˽âGCµÄÆ¢ÐÔÔںܶàʱºòÊǷdz£±ØÒªµÄ£¬ÆðÂëÔÚ³öÏÖ×ÊԴй©ÎÊÌâµÄʱºòÄã²»ÖÁÓÚÊÖ×ãÎÞ´ë¡£ÎÒд¹ýÒ»¸öÉú³Éexcel±¨±íµÄ¿Ø¼þ£¬ÆäÖжÔexcel¶ÔÏóµÄÊͷžÍÈÃÎÒæ»îÁËÒ»Õó¡£Èç¹ûÄã×ö¹ýexcel¿ª·¢µÄ»°£¬¿ÉÄÜÒ²Óöµ½¹ý½áÊøexcel½ø³ÌÖ®ÀàµÄÎÊÌ⣬ÌرðÊÇ°ü×°³ÉÒ»¸ö¹©±ðÈ˵÷ÓõĿâʱ£¬ºÎʱÊÍ·Åexcel¶ÔÏóÒÔÈ·±£½ø³Ì½áÊøÊÇÒ»¸ö¹Ø¼üÎÊÌâ¡£µ±È»£¬GCµÄÄÚ²¿»úÖƷdz£¸´ÔÓ£¬»¹ÓÐÐí¶àÄÚÈÝ¿ÉÍÚ£¬µ«Á˽âËùÓÐϸ½ÚµÄ³É±¾Ì«¸ß£¬Ö»ÐèÁ˽â»ù´¡£¬¹»Óþͺᣠ¡¤ using() Óï·¨ÓÐÓÃÂð£¿Ê²Ã´ÊÇIDisposable£¿ËüÊÇÈçºÎʵÏÖÈ·¶¨ÐÔÖÕ½áµÄ¡£ using()ÄÜ×Ô¶¯µ÷ÓÃDispose·½·¨ ±ÈÈ磺using()»á×Ô¶¯µ÷ÓÃMyObjectµÄDispose·½·¨ using ( MyObject myObject = new MyObject ( ) ) { Console.WriteLine ( ¡°quit¡± ) ; } IDisposiableÊÇÏÔʾÊͷŶÔÏóµÄ½Ó¿Ú£¬ÊµÏÖIDisposiable½Ó¿ÚµÄÀ࣬¿ÉÒÔÏÔʾµÄÊͷŶÔÏó¡£ £¬Í¨¹ý±àдDispose·½·¨À´ÊµÏÖÏÔʽÊÍ·Å×ÊÔ´£» // C# class MyClass : IDisposable { public MyClass() {} // ¹¹Ô캯Êý ~MyClass() {} // Îö¹¹·½·¨ (²»È·¶¨µÄ) (±àÒëÆ÷ͨ¹ýÖØÔØvirtual void FinalizeÀ´ÊµÏÖ)£¬ÓëC++/CLIµÄ!MyClass()µÈЧ public void Dispose() {} // Dispose·½·¨ public static void Test() { using(MyClass auto = new MyClass()) { /* ʹÓÃauto¶ÔÏó */ } // ÒòΪʹÓÃÁËusing¾ä·¨£¬±àÒëÆ÷×Ô¶¯µ÷ÓÃauto.Dispose() // ÒÔÉÏ´úÂëµÈЧÓÚ: MyClass user = new MyClass(); try { /* ʹÓÃuser¶ÔÏó */ } finally { user.Dispose(); } } } ¡¤ tasklist /m ¡°mscor*¡± Õâ¾äÃüÁîÊǸÉÂïµÄ£¿ ÁгöËùÓÐʹÓÃÁËÒÔ¡± mscor¡±×÷Ϊ¿ªÍ·µÄdll»òÕßexeµÄ½ø³ÌºÍÄ£¿éÐÅÏ¢ ¡¤ in-procºÍout-of-procµÄÇø±ð in-procÊǽø³ÌÄÚ£¬½ø³ÌÄÚÄܹ²Ïí´úÂëºÍÊý¾Ý¿é£¬out-of-procÊǽø³ÌÍ⣬½ø³ÌÍâµÄ»¥²Ù×÷ÐèÒªÓýø³Ì¼äͨѶÀ´ÊµÏÖ¡£ ¡¤ .NETÀïµÄÄÄÒ»Ïî¼¼ÊõÄܹ»ÊµÏÖout-of-procͨѶ£¿ .Net Remoting¼¼Êõ»òÕßWCF¼¼Êõ ¡¤ µ±ÄãÔÚASP.NETÖÐÔËÐÐÒ»¸ö×é¼þʱ£¬ËüÔÚWindows XP, Windows 2000, Windows 2003ÉÏ·Ö±ðÅÜÔÚÄĸö½ø³ÌÀïÃ棿 Xp : aspnet_Wp.exe Windows 2000 : inetinfo.exe
Windows 2003 : w3wp.exe
|