我在线程里加了一个循环,然后在DESTROY中用OUTPUTDEBUGSTRING跟踪,发现EXECUTE循环还没结束就执行了DESTROY,请问这是怎么回事?
解决方案 »
- 想获取存储过程返回值,报错。
- 怎样做一个鼠标连击器,即在游戏中按下x键就等于鼠标连击,用户只用移动鼠标即可,不用点了?
- 请问怎么把时间类型转换为int类型?(在线等,谢谢)
- 请教大家在dbgrid中的统计求和问题。
- ADOconnection连接的一个错误,请教各位大侠
- 谁能帮我看看这个问题出在那里呀为什么只能调用一次过程?
- 想应聘程序员,贱卖也没人要,n郁闷!散分...
- 请推荐一些好书或者网站用Delphi编写Com的。
- treeview怎样标识某个结点(象vb中treeview结点的主键)?接昨天的问题
- 救急,小弟用TPrinter实现文本打印,请教如何换页???
- 以前也有人提过不过没有明确的答案:自定义组件 报rtl 地址错误
- 请问tform2.Create(nil)中的nil是什么意思啊?马上揭贴
这我也觉得奇怪
try
try
//repeat
while (not FQuited) and (WaitForSingleObject(FStartEvent,INFINITE)=WAIT_OBJECT_0) do
begin
ResetEvent(FStartEvent);
s:=InttoStr(Handle)+'已经执行一次';
OutputDebugString(Pchar(s));
try
EnterCriticalSection(FCritic);
InterLockedIncrement(RoomCount);
//SetEvent(FEvent^);
SetEvent(FStopEvent);
if RoomCount>High(RoomAry) then
FQuited:=True;
finally
LeaveCriticalSection(FCritic);
end;
until FQuited=True;
finally
if FTCPClient.Connected then
FTCPClient.Disconnect;//我怀疑是这一句引发异常而导致后面语句没有执行,但我不 知道这句话为什么会引发异常,这是INDY10的组件 OutputDebugString(Pchar(s));
CloseHandle(FStartEvent);
CloseHandle(FStopEvent);
with TCreateSectThread.Create(参数) do
OnTerminate := MyThreadDone;procedure MyThreadDone(Sender: TObject);
procedure TForm1.MyThreadDone(Sender: TObject);
begin
//线程结束后要执行的代码
end;