|
µ¨¸¶´ç °ø½Ä ÀºÇà°èÁ |
ÇϳªÀºÇà 227-910235-83607 |
¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø) |
|
|
|
|
|
|
|
|
|
|
°ÁÂ, ÆÁ, Á¤º¸ |
°ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù. |
|
|
|
À͸íÇÔ¼ö+¾²·¹µå¸¦ È°¿ëÇÑ °£´ÜÇÑ ¾²·¹µå »ç¿ë ¹æ¹ý |
Ŭ¶ó¿ì
(Á¶´ëÇö)
2018-03-03 ¿ÀÈÄ 10:08:15
Ä«Å×°í¸®:
ÆÁ
4477ȸ Á¶È¸
µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
|
|
|
±âÁ¸¿¡´Â TThread¸¦ »ó¼ÓÇÏ¿© ±¸ÇöÇÏ¿´±â¿¡ Ãʺ¸½ÃÀý¿£ Á¢±Ùµµ ¾î·Æ°í Àá±ñ ¾²·¹µå°¡ ÇÊ¿äÇÑ ½ÃÁ¡¿¡¼ÀÇ È°¿ëµµ ¹ø°Å·Î¿ü½À´Ï´Ù. ´ÙÇàÈ÷ µ¨ÆÄÀÌ 2010¹öÀüºÎÅÍ À͸íÇÔ¼ö°¡ Á¦°øµÇ¾ú´Âµ¥ ´öºÐ¿¡ ¾²·¹µå¸¦ ¾ÆÁÖ ¼Õ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸, ¿©±â¼´Â ÀÚ¼¼È÷ ¼³¸íÇÒ ¼ø ¾øÁö¸¸ ¾ÈÀüÇÑ ¾²·¹µå »ç¿ëÀ» À§ÇØ Å©±â 2°¡Áö¸¦ ÁöÄÑ¾ß ÇÕ´Ï´Ù.
1) ¾²·¹µåÀÇ begin ~ end ºí·Ï »çÀÌ¿¡¼ UI¸¦ Á¶ÀÛ(º¯°æ, ¼öÁ¤, »èÁ¦µî)ÇÒ¶§´Â Syncronize¸¦ ÀÌ¿ëÇÑ´Ù. 2) ´Ù¸¥ ¾²·¹µå¿Í µ¿½Ã¿¡ °°Àº ÀÚ¿ø(º¯¼ö, Ŭ·¡½ºµî)À» °øÀ¯(µ¿½Ã¿¡ Àаųª ¾²´Â ÇàÀ§, Æ÷ÀÎÅ͸¦ ÂüÁ¶ÇÏ´Â ÇàÀ§)ÇÏÁö ¾Ê´Â´Ù.
°£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù.
1. 100ms ŸÀÌ¸Ó ¸¸µé±â
µ¨ÆÄÀÌ ±âº» ŸÀ̸Ӵ À©µµ¿ì À̺¥Æ® ¹æ½ÄÀ¸·Î ±¸ÇöµÇ¹Ç·Î ´ÙÀ½°ú °°Àº Ä¡¸íÀûÀÎ ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù.
1) Á¤È®µµ°¡ ¶³¾îÁö°í(À©µµ¿ì ÄÁµð¼Ç¿¡ µû¶ó 100~500ms ÀÌÇÏ ÀÛµ¿ ºÒ±ÔÄ¢) 2) ¸ÞÀÎUI(¸ÞÀξ²·¹µå)°¡ ¸ØÃßÁö ¾Ê°í ÀÛ¾÷ ºÒ°¡´É
±×·¡¼ Çʼö·Î ¾²·¹µå¸¦ ÀÌ¿ëÇÑ Å¸À̸Ӹ¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. À͸íÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ¼Õ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
procedure TForm1.FormCreate(Sender: TObject); begin TThread.CreateAnonymousThread(procedure begin while Applicaton.Terminated do begin Sleep(100); DoTimerTick; // DoTimerTick¿¡¼ ¼Ò¿äµÇ´Â ½Ã°£À» ¸ðµÎ ±â´Ù¸®¹Ç·Î while¹®À» ÅëÇØ Áߺ¹ ½ÇÇàµÇÁö´Â ¾Ê½À´Ï´Ù. end; end).Start; end;
procedure TForm1.DoTimerTick1; var i, k: integer; begin // ¿©±â¼ºÎÅÍ ¹é±×¶ó¿îµå ÀÛ¾÷À» ÇÏ¸é µË´Ï´Ù. // ¸ÞÀÎ UI¸¦ ¸ØÃß°Ô ÇÏÁö ¾Ê½À´Ï´Ù.
// ÀÌ·± for ±¸¹®µµ ¾ÆÁÖ ºü¸£°Ô µ¿ÀÛÇÏ¸ç ¸ÞÀÎUIµµ Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. for i ;= 0 to 9999999999 do begin Inc(k); end;
// sleepµµ ¸ÞÀÎUI°¡ Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. sleep(1000);
// ¸ÞÀÎ UI¸¦ Á¶ÀÛÇÏ·Á¸é Synchronize ó¸®ÇÕ´Ï´Ù. TThread.Synchronize (TThread.CurrentThread, procedure () begin Label1.Caption := IntToStr(k); end); ShowLogMsg('ŸÀÌ¸Ó ÀÛµ¿ Áß...'); end;
procedure TForm1.ShowLogMsg(AMsg: String); begin // ÃÖÃÊ È£Ãâ ½ÃÁ¡ÀÌ ¾²·¹µå¶ó¸é ¾Æ·¡¿Í °°ÀÌ Synchronize ó¸® TThread.Synchronize (TThread.CurrentThread, procedure () begin Memo1.Lines.Add(AMsg); end); end;
2. ¹öÆ° Ŭ¸¯ ½Ã ´ë±â½Ã°£ ±¸Çö
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'ÆÄÀÏ º¹»ç ½ÃÀÛ';
TThread.CreateAnonymousThread(procedure begin FileCopy('c:\org.avi', 'd:\dst.avi'); // ¿ë·® 100mb avi ÆÄÀÏ º¹»ç
TThread.Synchronize (TThread.CurrentThread, procedure () begin Label1.Caption := 'ÆÄÀÏ º¹»ç Á¾·á'; end); end).Start; end;
procedure TForm1.Button2Click(Sender: TObject); begin TThread.CreateAnonymousThread(procedure begin TThread.Synchronize (TThread.CurrentThread, procedure () begin Edit1.ReadOnly := true; Edit1.Caption := '2ÃÊ ÈÄ ÀÔ·Â °¡´É'; end); Sleep(2000); TThread.Synchronize (TThread.CurrentThread, procedure () begin Edit1.ReadOnly := false; Edit1.Caption := 'ÀÌÁ¦ºÎÅÍ ÀÔ·Â °¡´É'; end); end).Start; end;
|
|
|
|
|
|
|
|
|