能力值:
( LV2,RANK:10 )
|
-
-
2 楼
在线等,我感觉我快差不多了!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
搞了半天还是没明白,继续研究
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
不清楚原理, 过去使用Delphi的时候,使用新开线程操作界面过快也经常出错, 不过我比较懒,遇到这种就使用time组件,把循环操作界面数据的代码放里面,让delphi的主界面线程自己去刷新。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
procedure aa; stdcall; var i: integer; begin i := 0; while True do begin //位置三 //临界区加在这里 EnterCriticalSection(CS3); form1.SendData(form1.Handle, '刷新数据' + '#' + inttostr(1) + '#' + inttostr(i + 1) + '#' + inttostr(i + 2) + '#' + inttostr(i + 3) + '#' + inttostr(i + 4) + '#' + inttostr(i + 5));
leaveCriticalSection(CS3); Inc(i); Sleep(constsleep); end; end;
procedure bb; stdcall; var i: integer; begin i := 0; while True do begin //临界区加在这里 EnterCriticalSection(CS3); form1.SendData(form1.Handle, '刷新数据' + '#' + inttostr(2) + '#' + inttostr(i + 1) + '#' + inttostr(i + 2) + '#' + inttostr(i + 3) + '#' + inttostr(i + 4) + '#' + inttostr(i + 5));
leaveCriticalSection(CS3); Inc(i); Sleep(constsleep); end;
end; 其它地方不用加上临界区 信我保平安 呵呵 因为从位置3就开始调用主线程的东西了 所以要同步一下
|
|
|