Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Äã¿ÉÄܲ»ÖªµÀµÄÏÝÚ壺C#ίÍкÍʼþµÄÀ§»ó
 
  2708  次浏览      27
 2018-1-10 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬±¾ÎĽéÉÜÁËC#µÄίÍкÍʼþµÄ¶©ÔĺÍÈ¡Ïû¶©ÔÄ£¬²¢ÔÚÄäÃûº¯ÊýºÍ¶àÏß³ÌÁ½¸ö»·¾³ÏÂÌÖÂÛÁËһЩÎÊÌâ¡£

Ò». ÎÊÌâÒýÈë

ͨ³££¬Ò»¸öCÓïÑÔѧϰÕßµÇÌÃÈëÊҵıêÖ¾¾ÍÊÇѧ»áʹÓÃÁËÖ¸Õ룬¶ø³ÉΪ¸ßÊֵıêÖ¾ÓÖÊÇ¡°Íæ×ªÖ¸Õ롱¡£Ö¸ÕëÊÇÈç´ËÆæÃͨ¹ýÒ»¸öµØÖ·£¬¿ÉÒÔÖ¸ÏòÒ»¸öÊý£¬½á¹¹Ì壬¶ÔÏó£¬ÉõÖÁº¯Êý¡£×îºóµÄÒ»ÖÖº¯Êý£¬ÎÒÃdzÆÖ®Îª¡°º¯ÊýÖ¸Õ롱£¨ºÍ¡°Ö¸Õ뺯Êý¡±¿É²»Ò»Ñù£¡£©¾ÍÏñÈçϵĴúÂ룺

int func(int x); /* ÉùÃ÷Ò»¸öº¯Êý */
int (*f) (int x); /* ÉùÃ÷Ò»¸öº¯ÊýÖ¸Õë */
f=func; /* ½«funcº¯ÊýµÄÊ×µØÖ·¸³¸øÖ¸Õëf */

CÓïÑÔÒòΪº¯ÊýÖ¸Õë»ñµÃÁ˼«Ç¿µÄ¶¯Ì¬ÐÔ£¬ÒòΪÄã¿ÉÒÔͨ¹ý¸øº¯ÊýÖ¸Õ븳ֵ²¢¶¯Ì¬¸Ä±äÆäÐÐΪ£¬ÎÒÔøÔÚµ¥Æ¬»úÉÏдµÄÒ»¸öСϵͳÖУ¬ÈÎÎñµ÷¶È»úÖÆÍæµÄ¾ÍÊǺ¯ÊýÖ¸Õë¡£

ÔÚ.NETʱ´ú£¬º¯ÊýÖ¸ÕëÓÐÁ˸ü°²È«¸üÓÅÑŵİü×°£¬¾ÍÊÇίÍС£¶øÊ¼þ£¬ÔòÊÇΪÁËÏÞÖÆÎ¯ÍÐÁé»îÐÔÒýÈëµÄС°Î¯ÍС±£¨Ö®ËùÒÔΪʲôÏÞÖÆ£¬ºóÃæ»á̸µ½£©¡£Í¬Ñù£¬ÊìÁ·ÕÆÎÕίÍкÍʼþ£¬Ò²ÊÇC#µÇÌÃÈëÊҵıêÖ¾¡£ÓÐÁËʼþ£¬´ó´ó¼ò»¯Á˱à³Ì£¬Àà¿â±äµÃǰËùδÓеĿª·Å£¬ÏûÏ¢´«µÝ±äµÃ¸ü¼Ó¼òµ¥£¬ÈκÎÊìϤʼþµÄÈËÒ»¶¨¶¼ÉîÓÐÌå»á¡£

µ«ÄãÒ²ÖªµÀ£¬Ö¸ÕëÇ¿´ó£¬¸ßÐÔÄÜ£¬´øÀ´µÄ¾ÍÊÇΣÏÕ£¬Äã²»ÖªµÀÕâ¸öÖ¸ÕëÊÇ·ñ°²È«£¬³öÁËÎÊÌ⣬·Ç³£ÄÑÓÚµ÷ÊÔ¡£Ê¼þºÍίÍÐÕâôºÃ£¬¿ÉÊǵ±ÄãдÁ˺ܶà´úÂ룬Íê³É´óÐÍϵͳʱ£¬ÐÄÀïÊDz»ÊÇ×ܾõµÃ¹Ö¹ÖµÄ£¿Óе±ÄêʹÓÃÖ¸ÕëʱÀàËÆµÄ¸Ð¾õ£¿

Èç¹ûÊǵϰ£¬Çë¿´ÈçϵÄÎÊÌ⣺

Èô¶à´ÎÌí¼Óͬһ¸öʼþ´¦Àíº¯Êýʱ£¬´¥·¢Ê±´¦Àíº¯ÊýÊÇ·ñÒ²»á¶à´Î´¥·¢£¿

ÈôÌí¼ÓÁËÒ»¸öʼþ´¦Àíº¯Êý£¬È´Ö´ÐÐÁËÁ½´Î»ò¶à´Î¡±È¡Ïûʼþ¡°£¬ÊÇ·ñ»á±¨´í£¿

ÈçºÎÈ϶¨Á½¸öʼþ´¦Àíº¯ÊýÊÇÒ»ÑùµÄ£¿ Èç¹ûÊÇÄäÃûº¯ÊýÄØ£¿

Èç¹û²»ÊÖ¶¯É¾³ýʼþº¯Êý£¬ÏµÍ³»á°ïÎÒÃÇ»ØÊÕÂð£¿

ÔÚ¶àÏ̻߳·¾³Ï£¬¹Ò½ÓʼþʱºÍ¶ÔÏó´´½¨ËùÔÚµÄÏ̲߳»Í¬£¬ÄÇʼþ´¦Àíº¯ÊýÖеĴúÂ뽫ÔÚÄĸöÏß³ÌÖÐÖ´ÐУ¿

µ±´úÂëµÄ²ã´Î¸´ÔÓʱ£¬¿ª·ÅίÍкÍʼþÊDz»ÊÇ»á´øÀ´¸ü´óµÄÂé·³£¿

ÁÐÏÂÕâЩÎÊÌ⣬ÏÂÃæ¾ÍÈÃÎÒÃÇÌÖÂÛÕâЩ¡±¼âËá¿Ì±¡¡°µÄÎÊÌâ¡£

¶þ. ʼþ¶©ÔĺÍÈ¡ÏûÎÊÌâ

ÎÒÃÇ¿¼ÂÇÒ»¸öµäÐ͵ÄÀý×Ó£º¼ÓÈÈÆ÷£¬¼ÓÈÈÆ÷ÄÚ²¿¼ÓÈÈ£¬ÔڴﵽζȺó֪ͨÍâ½ç¡±¼ÓÈÈÒѾ­Íê³É¡°¡£ ³¢ÊÔдÏÂÈçϲâÊÔÀࣺ

+ View Code

OK,¼òµ¥ÁË£¬ÏÂÃæÊÇmainº¯Êý£º

class Program
{
static void Main(string[] args)
{
var test = new Heater();
test.OnBoiled += TestOnBoiled;
test.OnBoiled += TestOnBoiled;
test.Begin();
Console.ReadKey();
}
static void TestOnBoiled(object sender, EventArgs e)
{
Console.WriteLine("Helloʼþ±»µ÷ÓÃ");
}
}

ÎÒÃÇÓÐÒ⽫ʼþ¹ÒÔØÁËÁ½´Î£¬¿´¿´Ö´ÐÐЧ¹û:

ºÜÃ÷ÏÔ£¬Èç¹û¶à´Î¹ÒÔØÍ¬Ò»Ê¼þ´¦Àíº¯Êý£¬º¯Êý½«»áÖ´Ðжà´Î¡£

Õâ¾ÍÊǵÚÒ»¸öÎÊÌâµÄ´ð°¸¡£

½ÓÏÂÀ´£¬ÎÒÃǽ«ÉÏÎÄÖÐmainº¯ÊýÖкìÉ«´úÂëÌæ»»³ÉÈçϵ°Ì۵ĴúÂ룺

test.OnBoiled += TestOnBoiled;
test.OnBoiled -= TestOnBoiled;
test.OnBoiled -= TestOnBoiled;

ÔÚʵ¼Ê¿ª·¢ÖУ¬ÕâÖÖÇé¿öÊÇºÜÆÕ±éµÄ£¬Ë­¶¼ÓпÉÄÜÈ¡Ïû¶©ÔĶà´Î£¬½á¹ûÈçºÎÄØ£¿

ÔÚÖ´Ðйý³ÌÖУ¬É¾³ýÁ½´ÎʼþûÓб¨´í£¬µ«µ±´¥·¢Ê¼þʱ£¬ÓÉÓÚʼþ¶©ÔÄÁбíΪ¿Õ£¬ËùÒÔ£¬µÚ¶þ¸öÎÊÌâµÄ´ð°¸£º

¶à´Îɾ³ýͬһʼþÊDz»»á±¨´íµÄ£¬¼´Ê¹Ê¼þÖ»±»¶©ÔÄÁËÒ»´Î¡£Èô³öÏÖ¶©ÔÄÈý´Î£¬È¡Ïû¶©ÔÄÁ½´Îʱ£¬ÒÀ¾ÉÖ´ÐÐÒ»´Î¡£

Õâ¸öÊÂÇéÊǺÃÀí½âµÄ£¬Ê¼þÁÐ±í£¬Êµ¼ÊÉϾÍÊÇList£¬×î¼òµ¥µÄÔöɾÎÊÌâ¡£

Èý. ÓÐÁËÄäÃûº¯Êýºó£¿

×Ô´ÓѧϰÄäÃûº¯Êýºó£¬±ÊÕß¾ÍÌØ±ðϲ»¶ÓÃËü£¬³ý·Ç´úÂëÁ¿Ìر𳤣¬·ñÔòÊ®ÐÐÖ®ÄÚµÄʼþ¶©ÔÄ£¬ÎÒ¶¼»áÓÃÄäÃûº¯Êý¡£¿ÉÊÇÊÂÇé±äµÃÓÐÒâ˼ÁË£¬Ð´ÁËÄäÃûº¯Êýºó£¬¼¸ºõûÈ˼ǵÃÈ¡Ïû¶©ÔÄ£¬ÄÇô£¬·¢ÉúÁËʲôÊÂÇéÄØ£¿

ºÍÉÏ´ÎÒ»Ñù£¬ÎÒÃǽ«Ç°ÃæºìÉ«´úÂë¸Ä³ÉÏÂÃæµÄÑù×Ó:

test.OnBoiled += (s, e) => Console.WriteLine("¼ÓÈÈÍê³Éʼþ±»µ÷ÓÃ");<br data-filtered="filtered">test.OnBoiled -= (s, e) => Console.WriteLine("¼ÓÈÈÍê³Éʼþ±»µ÷ÓÃ");<br data-filtered="filtered">test.Bein();

ResharperÖ±½Ó¸øÎÒ»­ÁË»ÒÏߣ¬ÈçÏÂͼ£º

ÎÒ¹À¼ÆÇé¿ö²»Ì«ÀÖ¹Û£¬Ö´ÐÐÖ®ºó£º

¹ûÈ»£¡¼ÓÈÈÍê³Éʼþ»¹ÊDZ»µ÷ÓÃÁË£¬Ò²¾ÍÊÇ˵£¬¿´×ÅÐÎʽÍêȫһÖµÄÁ½¸öÄäÃûº¯Êý£¬±àÒëÆ÷Éú³ÉµÄ·½·¨Ç©ÃûÊDz»Ò»Öµģ¬¸ù±¾¾ÍÊÇÁ½¸ö²»Í¬µÄº¯Êý¡£Òò´Ë£¬ÄäÃûº¯ÊýÍêȫû·¨È¡Ïû¶©ÔÄ£¡ ÕâÊǵÚÈý¸öÎÊÌâµÄ´ð°¸¡£

ʼþ²»Äܱ»È¡Ïû¶©ÔÄ£¡ÕâÏ¿ɲÒÁË£¬ÎÒÕæµÄҪȡÏûÔõô°ì£¿Ã»°ì·¨£¬Ö»ÄܹԹԵÄдÍêÕûµÄʼþº¯Êý¡£ÄäÃû·½·¨ËäºÃ£¬Ç§Íò±ðÓùýÍ·¡£

µ«ÊÇ£¬ÕæÕýÂé·³µÄÎÊÌâÀ´ÁË£¬Ò»¸ö¸´ÔӵĶ¯Ì¬ÏµÍ³ÖУ¬Ò»¶¨ËæÊ±»áÓдóÁ¿µÄ¶ÔÏóÉú³ÉºÍÏú»Ù£¬ÄãÒ²Ò»¶¨»á¸øËü¶©ÔÄһЩʼþ£¬µ±ÄãÓÃÄäÃûº¯Êýºó£¬ÕâЩº¯ÊýÊDz»ÊǾÍÏñËÀÉñÒ»Ñù£¬Ò»Ö±Æþ×ÅÄãµÄ²±×Ó£¿ Èç¹ûʼþ´¦Àíº¯ÊýÉæ¼°ÖØÒª²Ù×÷£¬±ÈÈç¸ø¶Ô·½¸¶¿î£¬Ö´Ðжà´ÎÄãÊDz»ÊǾÍÒª¿ÞËÀÁË£¿

ËÄ. À¬»ø»ØÊÕºÍʼþ

À¬»ø»ØÊÕ»úÖÆ²óºÍ½øÀ´ºó£¬¹ÊʱäµÄ¸üÓÐÒâ˼ÁË¡£

ÎÒ¡°ÒóÇС±µÄÏ£Íû£¬À¬»ø»ØÊÕÆ÷»á°ïÎÒ½â¾öµÚÈý½Ú×îºóÒ»¶Î̸µ½µÄÎÊÌ⣬°ïÎÒÊÕʰµôÄÇЩº¯Êý£¬ÄÇÕæÊµµÄÇé¿öÄØ£¿ÎÒÃÇ×ö¸öÊÔÑ飺

ͬÑùµÄ£¬Ìæ»»µôºìÉ«²¿·Ö£º

test.OnBoiled += (s, e) => Console.WriteLine("¼ÓÈÈÍê³Éʼþ±»µ÷ÓÃ");
test=new Heater();
GC.Collect(); //Ç¿ÖÆÀ¬»ø»ØÊÕʵ¼ÊÉÏ¿ÉÓпÉÎÞ
test.Bein();

ÏÂÃæÊÇÖ´Ðнá¹û£º

¹þ£¬ÆðÂëÔÚÎÒ¸üÐÂÁ˶ÔÏóÒýÓã¬newÁËжÔÏóÖ®ºó£¬Ô­À´µÄÄäÃûʼþȷʵûÓÐÁË¡£¿´À´±àÒëÆ÷»¹Êǹ»Òâ˼µÄ¡£

¿ÉÊÇ£¬¶àÊýʵ¼Ê¿ª·¢Çé¿öÖУ¬ÎÒÃǺÜÉÙÖ±½ÓnewÒ»¸ö¶ÔÏ󸲸ǵôÔ­À´µÄÒýÓ᣶øÊÇÖØÐÂnewÁËÒ»¸ö¶ÔÏó³öÀ´¡£ÕâÖÖÇé¿öµÄ´úÂëÈçÏÂ

test.OnBoiled += (s, e) => Console.WriteLine("¼ÓÈÈÍê³Éʼþ±»µ÷ÓÃ");
var heaters = new List() { test, test };
heaters.Clear();
test.Begin();
test = null;
GC.Collect();

Ö´Ðнá¹ûÈçÏÂͼ£º

ÕâÖÖÇé¿öÏ£¬test¼´Ê¹±»¸³ÖµÎªnull£¬Ê¼þ»¹ÊÇ»á¹Ô¹ÔÖ´ÐУ¬ÒòΪÊÇÄäÃûº¯Êý£¬ÄãҲû·¨È¡Ïû¶©ÔÄ£¬¶øGCÇ¿ÖÆÊÕ¼¯Ò²Ã»Óã¡ Õâ¾ÍÊÇÎÒÃÇÕæÊµ³¡¾°ÖÐ×î¿ÉŵÄÊÂÇ飬ÄãÈÏΪËüÒѾ­ÏûʧÁË£¬¿ÉÊÇËü»¹¹ÒÔÚʼþÉÏ£¡

ÆäʵÕâÀïÓиöÆÆÕÀ£ºHeaterÀàÀ↑ÁËỊ̈߳¬ÎÒ¼´Ê¹¸³ÖµÎªnull£¬Ï߳̿϶¨»¹Ã»Óб»Ïú»Ù£¬Ê¼þȷʵ¿ÉÄÜ»áÖ´ÐУ¬Ê±¼äËùÏÞ£¬ÎÒûÓг¢ÊÔÔÚдһ¸öÀà²âÊÔ²»¿ªÏ̵߳ÄÇé¿ö£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ°ïæÊÔÒ»ÊÔ¡£

¶øÇÒ£¬¾­¹ýÎÒ²éÔÄ×ÊÁÏ£¬µ±ÄãµÄ¶ÔÏó¶©ÔÄÁËÍⲿµÄʼþ£¬¶øÓÖûÓÐÈ¡Ïû¶©ÔÄ£¬ÄÇô¸Ã¶ÔÏóÊDz»»á±»GC»ØÊյģ¡Õâ»áÔì³ÉºÜ¿Ö²ÀµÄÎÊÌ⣬²úÉúÁ˼¸Ç§Íò¸ö¶ÔÏóû·¨±»»ØÊÕ¡£¿ÉÊÇ£¬ÄäÃûº¯ÊýÈÃÎÒÔõôôȡÏû¶©ÔÄ£¿£¡

ËùÒÔÎÒÃǵõ½Á˽áÂÛ£¬³ý·ÇȷʵÊÇÒ»°ã³¡¾°£¬±ÈÈç½çÃæ¿ª·¢µÄwindow£¬Éú³ÉÁËÒ»Ö±´æÔÚ£¬»òÕßÔÚÓ¦ÓóÌÐò¹Ø±Õʱ»ØÊÕ£¬·ñÔòÉÙÓÃÄäÃûº¯Êý°É£¡¼ÇµÃÈ¡Ïûʼþ¶©ÔÄ£¡·ñÔò»áÊǷdz£Âé·³µÄÊÂÇ飡

Îå.¸ß³±£º ¶àÏ̺߳Íʼþ

¶àÏ̱߳¾À´¾ÍÊdzÌÐòԱͷÌÛµÄÎÊÌ⣬±ÊÕßÔÚ¶àÏß³Ì֪ʶÉÏÖ»ÊÇÈëÃÅ£¬Ã»¿ª·¢¹ý¸ß²¢·¢ÏµÍ³£¬µ¹ÊǾ­³£Óò¢Ðпâ¼ÓËÙËã·¨Ö´ÐС£ ÈÃÎÒÃÇ¿´¿´¶àÏ̺߳ÍʼþÁ½¸ö×îÄѸãµÄ¶«Î÷¾À²øÔÚÒ»ÆðʱÊǸöʲôÑù×Ó¡£

Ò»ÖÖ³£¼ûµÄ³¡¾°£¬ÊÇʼþ´¦ÀíºÜºÄʱ£¬±ÈÈçÖ´Ðг¤Ê±¼äµÄIO²Ù×÷£¬»òÕß½øÐÐÁ˸´ÔÓµÄÊýѧ¼ÆË㣬ÎÒÃDz»ÏëÓ°ÏìÖ÷Ị̈߳¬ÄÇôÄãÏ뵱ȻµÄ»áͨ¹ý¶àÏ̵߳ķ½·¨½â¾ö¡£

´´½¨¶ÔÏóµÄỊ̈߳¬Ò»°ãÊÇÖ÷Ị̈߳¨»òÕßUIỊ̈߳©£¬ÄÇô£¬ÔõôÈÃʼþ´¦Àíº¯ÊýÔÚÁíÍâÒ»¸öÏß³ÌÖ´ÐÐÄØ£¿ ÄãÕæµÄ±£Ö¤´¦Àíº¯ÊýÔÚÁíÍâÒ»¸öÏß³ÌÖÐÖ´ÐÐÁË£¿Òì²½µ÷Ó㿺ð취£¬²»¹ýÎÒÃÇ´Ë´¦²»ËµÕâ¸ö¡£

//////////////////**************///////////////////////////

ÐÞÕý£º¾­¹ýÁËÖØÐµIJâÊÔ£¬·¢ÏÖÎҵIJâÊÔÓÃÀýдµÄÓÐÎÊÌ⣬ΪÁËÈÃHeaterÀà×Ô¼º´¥·¢Ê¼þ£¬ÎÒÔÚÄÚ²¿Ð´ÁËÒ»¸öÐÂỊ̈߳¬µ¼Ö²âÊÔ²»×¼È·¡£

½áÂÛÓ¦¸ÃÊÇ£º ²»ÂÛÊDz»ÊÇÔÚ¶àÏ̻߳·¾³Ï£¬Ê¼þ´¦Àíº¯ÊýÒ»¶¨ÔÚ´¥·¢Ê¼þλÖÃËùÔÚµÄÏß³ÌÖУ¬ºÍʼþ¶©ÔÄÕߵĴ´½¨Ị̈߳¬¶©ÔÄʼþʱËùÔÚµÄÏß³ÌÎ޹ء£¡£¡£¡£¡£¡£ÎÒµÚÎå½ÚµÄÄÚÈÝ£¬Óжà°ë¶¼ÊÇ´íµÄ¡£¡£¡£¡£

Òò´Ë£¬ÈôÊÇ´¥·¢Ê¼þËùÔÚÏß³ÌÊÇÖ÷Ï̵߳ϰ£¬»ù±¾ÉÏÖ»ÄÜÓÃÎÒÌá³öµÄµÚ¶þÖÖ×ö·¨£¬Í¨¹ýʼþÄÚ²¿Ê¹ÓÃÏ̳߳ØÀ´Ö´ÐÐÁË¡£¸Ðл West Continent µÄÌÖÂÛ¡£

/////////////////*************/////////////////////

1. н¨Ï̷߳½·¨£º

³õѧÕß»áÕâô×ö£º

test.OnBoiled += (s, e) =>
{
var newThread = new Thread(
new ThreadStart(
() =>
{
Thread.Sleep(2000); //Ä£Äⳤʱ¼ä²Ù×÷
Console.WriteLine("×ÜËã°ÑÈȺõÄË®¼Óµ½ÁËůƿÀï");
}));
newThread.Start();
};
test.Begin();

ÎÒµÄÊÖÖ¸»¹ÊÇÑ¡ÔñÁËÄäÃûº¯Êý£¬ÓÃÆðÀ´ÕæË¬£¬ÕâÖÖÇé¿öÏ£¬ÏÔȻʼþ´¦Àíº¯ÊýËùÔÚÏ̺߳ÍÖ÷Ï̲߳»Ò»Ñù¡£

¿ÉÊÇ£¬ÉÔ΢Óеã»ù´¡µÄÈ˾ÍÖªµÀ£¬µ±Ê¼þ±»Æµ·±´¥·¢Ê±£¬Ï߳̾ͻᱻƵ·±Éú³É£¬Ïß³ÌͬÑùÊǷdz£°º¹óµÄϵͳ×ÊÔ´£¬¸üºÎ¿ö£¬Ïß³ÌµÄÆô¶¯Ê±¼äÊDz»È·¶¨µÄ£¬¿ÉÄܻᵢÎó´óÊ¡£Õâ²»ÊǸöºÃ·½°¸¡£

2. Ï̳߳Ø

²ÉÓÃ.NET 4.0µÄÏ̳߳ØÊÔÊÔ¿´£¬´úÂëÈçÏ£º

var mainThread = Thread.CurrentThread;
test.OnBoiled += (s, e) =>
{
ThreadPool.QueueUserWorkItem((d) =>
{
Thread.Sleep(2000); //Ä£Äⳤʱ¼ä²Ù×÷
Console.WriteLine("×ÜËã°ÑÈȺõÄË®¼Óµ½ÁËůƿÀï");
if (Thread.CurrentThread != mainThread)
{
Console.WriteLine("Á½ÕßÖ´ÐеÄÊDz»Í¬µÄÏß³Ì");
}
else
{
Console.WriteLine("Á½ÕßÖ´ÐеÄÊÇÏàͬµÄÏß³Ì");
}
});
};
test.Begin();

ÎÒÃÇͨ¹ý»º´æÖ÷Ị̈߳¬²¢±È½Ï´¦Àíº¯ÊýÖеÄỊ̈߳¬µÃµ½½á¹ûÈçÏ£º

ȷʵ£¬²ÉÓÃÏ̳߳ØÊ±£¬»áÊÇÁ½¸öÊDz»Ò»ÑùµÄỊ̈߳¬Ï̳߳ØÓÉÓÚÄÚ²¿×öÁ˹ÜÀí£¬Òò´Ë¿ÉÒÔÓÐЧµÄÀûÓÃỊ̈߳¬±ÜÃâ·è¿ñпªÏß³ÌÔì³ÉµÄÑÏÖØµÄÐÔÄÜÎÊÌâ¡£

¿ÉÊÇ£¬ÎÒ¾õµÃ»¹ÊÇÂé·³£¬ÓÈÆäÊÇÓжàÖÖʼþʱ£¬°¤¸öдÏ̳߳ػ¹ÊÇÌ«Âé·³ÁË¡£ÄÇô£¬ÎÒÃÇÊDz»ÊÇÓÐÁ½ÖÖ·½°¸£¿

Ò»ÖÖÊǽ«¹¹Ô캯ÊýдÔÚÒ»¸öÐÂÏß³ÌÖУ¬ÁíÍâÒ»ÖÖÊǽ«Ê¼þ¶©Ôĺ¯ÊýдÔÚÐÂÏß³ÌÖУ¬Á½Õ߻ᷢÉúÔõÑùµÄÇé¿öÄØ£¿

3. ¶ÔÏóµÄ¹¹Ô캯Êý´¦ÔÚÐÂÏß³Ìʱ£º

ÈçϲâÊÔ´úÂ룺

var mainThread = Thread.CurrentThread;
var autoResetEvent = new AutoResetEvent(false); //ͨ¹ýÐźŻúÖÆ±£Ö¤¶ÔÏóÊ×Ïȱ»´´½¨
ThreadPool.QueueUserWorkItem((d) =>
{
test=new Heater();
autoResetEvent.Set();
});
autoResetEvent.WaitOne();
test.OnBoiled += (s, e) => Console.WriteLine(Thread.CurrentThread != mainThread ? "Á½ÕßÖ´ÐеÄÊDz»Í¬µÄÏß³Ì" : "Á½ÕßÖ´ÐеÄÊÇÏàͬµÄÏß³Ì");
test.Begin();

´úÂëÖµµÃÒ»ÌáµÄÊÇ£¬ÎªÁ˱£Ö¤¶ÔÏó±»Ê×ÏÈ´´½¨£¬²ÉÓÃÁËÐźŻúÖÆÊµÏÖÏß³Ìͬ²½£¬µ±´´½¨ºó£¬Ö÷Ï̲߳ŻáÍùÏÂÖ´ÐУ¬·ñÔò»áÅ׳ö¿ÕÒýÓõÄÒì³£.

½á¹ûÈçÏ£º

¿É¼û£º Ö÷Ï̳߳ÆÎªMain, Èô¶ÔÏó¹¹Ô캯ÊýÔÚBÏß³ÌÖ´ÐУ¬Ê¼þ²»ÔÚÖ÷Ïß³ÌÖÐÖ´ÐС£ÄÇÊDz»ÊÇÔÚBÏß³ÌÖÐÖ´ÐÐÄØ£¿ÔÝʱ»¹²»ÖªµÀ¡£

4. ¶ÔÏóµÄʼþ¶©Ôĺ¯Êý´¦ÔÚÐÂÏß³Ìʱ£º

ÔÚÁíÍâÒ»¸öÏß³ÌÀï´´½¨¶ÔÏóÊǸüÂé·³µÄ£¬ÄãÒª½â¾öÏß³Ìͬ²½ÎÊÌ⣬¶ñÐIJ»£¬¹þ¹þ¡£

ÄÇô£¬Èô¶©ÔÄʼþµÄ´úÂëÔÚÏß³ÌBʱ£¬Çé¿öÊÇÔõÑùµÄÄØ£¿

var mainThread = Thread.CurrentThread;
ThreadPool.QueueUserWorkItem((d) =>
{
var bThread = Thread.CurrentThread;
test.OnBoiled += (s, e) =>
{
if(Thread.CurrentThread == mainThread )
Console.WriteLine("ʼþÔÚÖ÷Ïß³ÌÖÐÖ´ÐÐ");
else if (bThread==Thread.CurrentThread)
{
Console.WriteLine("ʼþÔÚ¶©ÔÄʼþµÄÏß³ÌBÖÐÖ´ÐÐ");
}
else
{
Console.WriteLine("ʼþÔÚµÚÈý¸öÏß³ÌÖÐÖ´ÐÐ");
}
};
});

test.Begin();

½áÂÛ£º

˵ʵ»°£¬ÎÒ¿´µ½Õâ¸ö³¡¾°µÄʱºò´ó³ÔÒ»¾ª£¬¾ÓȻִÐÐʼþµÄ´úÂë²»ÔÚÖ÷Ị̈߳¬²»ÔÚ¶©ÔÄʼþµÄỊ̈߳¬¶øÔÚÁíÍâÒ»¸öµÚÈýÕßỊ̈߳¡Õâ¿ÉÄܾÍÊÇÏ̳߳صÄÎÞµÐÖ®´¦°É£¬ËüÁ¬Ê¼þ¶©Ôĺ¯Êý¶¼¸øÍйÜÁË£¡ÕæÊǵﱤÁË£¡£¡

²»¹ý£¬¹ÜËüÊÇʲôÏß³ÌÀïÖ´ÐУ¬·´ÕýÎÒÖ÷Ïß³ÌÊDz»»á±»¶ÂÈûÁË£¬¹þ¹þ.

Áù.½áÓï

±¾À´Ïë½ñÌì°Ñ×îºóÒ»¸öÎÊÌâ¶¼½â¾öµÄ£¬¿ÉÊÇʱ¼äʵÔÚÌ«Íí£¬¶øÇÒÎÄÕÂÒѾ­¹»³¤ÁË¡£²»·Á×îºóÒ»¸öÎÊÌ⣬¡°ÔÚ¸´ÔÓÈí¼þ»·¾³Ï£¬ÈçºÎÀíÐÔÕýÈ·µÄʹÓÃίÍкÍʼþ¡±·ÅÔÚµÚ¶þ²¿·Ö°É¡£ÓÐЩÎÊÌâÎÒҲû¸ãÇ壬ÔÚ×öʵÑéµÄÇé¿öÏ£¬²ÅÖð½¥½Ó½ü½áÂÛ¡£ дÍêÕâÆªÎÄÕ£¬ÎÒÉîÓÐÊÕ»ñ¡£

Æäʵ£¬°´ÕÕ¹ßÀý£¬Ó¦¸Ã°ÑIL´úÂëºÃºÃ¸ã³öÀ´¸ø´ó¼Ò¿´²ÅËãÊÇ¡°×¨Òµ¡±µÄÑ¡Ôñ£¬²»¹ýÎÒȷʵ²»¶®IL£¬¾Í²»ÄóöÀ´¶ªÈËÁË£¬¸ßÊÖÃÇÇë×ÔÐÐÄÔ²¹¡£

 

²âÊÔ´úÂë¼û¸½¼þ£¬Ç뽫²»Í¬RegionµÄ´úÂë½â¿ª×¢ÊͽøÐвâÊÔ¡£

   
2708 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì