一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

delphi匿名線程中調(diào)用TThread類方法與屬性

 昵稱7887676 2012-12-17
 Pascal Code 
1
2
3
4
5
6
7
8
9
10
11
12
procedure TMainForm.Button1Click(Sender: TObject);
begin
  TThread.CreateAnonymousThread(procedure
     begin
       Synchronize(procedure
         begin
          Edit1.Text := 'aa';
         end
       );
     end
   ).Start;
end;

在這個環(huán)境中,作為 CreateAnonymousThread 參數(shù)的匿名函數(shù)所形成的閉包(Closure)所處于的上下文環(huán)境是 TMainForm.Button1Click。也就是說,閉包能訪問外部域是 TMainForm.Button1Click 所能訪問的域。你企圖訪問的 Synchronize 是 TThead.Synchronize,不論是類方法還是對象方法,都不處于 TMainForm.Button1Click 能訪問的作用域。碰巧你這個閉包中訪問 Self 是合法的,但它是 TMainForm 的實例調(diào)用 TMainForm 的實例的 Self,不是 TThread 的實例的 Self。
 
所以現(xiàn)在要做的就是解決訪問域的問題。
 
解決方案1:
 Pascal Code 
1
2
3
4
5
6
7
8
9
10
11
procedure TMainForm.Button1Click(Sender: TObject);
var
  t: TThread;
begin
  t := TThread.CreateAnonymousThread(procedure
     begin
       ...
     end
    );
  t.Start;
end;
這樣,閉包的上下文環(huán)境中包換了局部變量 t,可以通過它來完成對 TThread 實例的 Synchronize 方法的訪問。但是現(xiàn)在還有一個問題,TThread.Synchronize 方法是 protected,TMainForm 所在的單元不是 Classes,無法直接訪問。這時候只要簡單利用同一單元內(nèi)可以訪問 protected 的特性即可:
 Pascal Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
type
  TThreadPlus = class(TThread);

...

procedure TMainForm.Button1Click(Sender: TObject);
var
  t: TThread;
begin
  t := TThread.CreateAnonymousThread(procedure
     begin
       TThreadPlus(t).Synchronize(procedure
         begin
          Edit1.Text := 'aa';
         end
      end
    );
  t.Start;
end;
解決方案2:利用了TThead類的Class function處于Pulic的特性,免除了新類的聲明 
 Pascal Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TMainForm.Button1Click(Sender: TObject); 
var t: TThread; 
begin 
  t:= TThread.CreateAnonymousThread(procedure 
   begin 
        TThread.Synchronize(t,
           procedure 
             begin 
               Caption := 'aa';
             end ); 
   end);
  t.Start;
end;

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲熟妇中文字幕五十路| 久久99爱爱视频视频| 国产乱淫av一区二区三区| 国产福利在线播放麻豆| 欧美一区二区三区十区| 玩弄人妻少妇一区二区桃花| 亚洲国产性生活高潮免费视频 | 热久久这里只有精品视频| 微拍一区二区三区福利| 亚洲高清中文字幕一区二三区| 欧美一级特黄大片做受大屁股| 老司机精品福利视频在线播放| 午夜精品国产精品久久久| 欧美激情一区二区亚洲专区| 在线免费视频你懂的观看| 国产麻豆视频一二三区| 免费在线成人激情视频| 午夜精品成年人免费视频| 亚洲欧洲在线一区二区三区| 精品视频一区二区三区不卡| 欧美一级黄片免费视频| 日韩和欧美的一区二区三区| 亚洲夫妻性生活免费视频| 九九热这里只有免费精品| 亚洲欧美中文字幕精品| 国产一区二区三区丝袜不卡| 亚洲综合色婷婷七月丁香| 欧洲亚洲精品自拍偷拍| 免费高清欧美一区二区视频| 日韩中文字幕视频在线高清版 | 五月激情五月天综合网| 成年女人下边潮喷毛片免费| 亚洲中文在线观看小视频| 欧美黑人黄色一区二区| 国产又粗又猛又大爽又黄| 国内欲色一区二区三区| 69精品一区二区蜜桃视频| 国产亚洲不卡一区二区| 亚洲人妻av中文字幕| 人妻少妇av中文字幕乱码高清| 欧美亚洲综合另类色妞|