全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1486
推到 Plurk!
推到 Facebook!

Thred 錯誤之請益

答題得分者是:GrandRURU
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-31 11:46:41 IP:59.120.xxx.xxx 未訂閱
我有個按紐

TThread.CreateAnonymousThread(
procedure
var x:Integer;
begin
for x := 0 to 10000 do begin
edtmsg.Text:=IntToStr(x);
Application.ProcessMessages;
end;
end).Start;
執行會出現
First chance exception at $76E1B727. Exception class EAccessViolation with message 'Access violation at address 714179C9 in module 'comctl32.dll'. Read of address 00000000'. Process Project1.exe (2104)

為什麼會這樣呢?? 一個很普通的回圈而已啊.

編輯記錄
it1506 重新編輯於 2011-10-30 21:48:21, 註解 無‧
it1506 重新編輯於 2011-10-30 21:53:55, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-31 12:28:11 IP:59.120.xxx.xxx 未訂閱
Synchronize的問題
這種方式適合使用在有提供Lock功能的物件,如Canvas等

你如果使用在其它無Lock功能的物件,就必須採用傳統建立Thread的方法 Synchronize處理


万老師的博客
http://www.cnblogs.com/del/archive/2011/05/18/2049913.html




===================引 用 it1506 文 章===================
我有個按紐

TThread.CreateAnonymousThread(
procedure
var x:Integer;
begin
for x := 0 to 10000 do begin
edtmsg.Text:=IntToStr(x);
Application.ProcessMessages;
end;
end).Start;
執行會出現
First chance exception at $76E1B727. Exception class EAccessViolation with message 'Access violation at address 714179C9 in module 'comctl32.dll'. Read of address 00000000'. Process Project1.exe (2104)

為什麼會這樣呢?? 一個很普通的回圈而已啊.

it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-11-01 10:00:19 IP:59.120.xxx.xxx 未訂閱
  TThread.CreateAnonymousThread(
procedure
Var x:integer;
Begin
for x := 0 to 30000 do
TThread.Synchronize(nil,procedure
begin
Edit1.Text := inttostr(x);
// Application.ProcessMessages;
end);
end
).Start;

這樣就可以了,謝謝大大指導
系統時間:2024-04-25 5:59:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!