Delphi多匿名线程运行时,线程没有运行完一直挂着,是不是操作同一全局变量的问题,线程可提前释放吗,用fee线程还在执行,如果是操作同一变量怎么处理
测试时一直Begin
没有后面的End输出
D10.2 Android下
测试时一直Begin
没有后面的End输出
D10.2 Android下
解决方案 »
- 如何设置ListBox的 Item的背景色
- 小弟新手 请教大虾 could not convert variant of type (NULL) into type (String)如何处理
- 如何在Memo中移动当前显示的行,如ComboBox1.ItemIndex
- 请各位大虾帮忙解说一下,为什么会这样?
- 求助高手
- 鼠标移动的问题(UP有分!)
- 多媒体高手请帮忙!!!!!!!!!高分狂送!!!!!!!!!!!!
- 大家能谈谈delphi中nil的用法吗? 谢谢先!
- 求助:一个让很多人困惑的问题Dataset not in edit or insert mode
- 打印时间遇到的问题,大家赶赶紧帮忙呀。
- 存入数据库中的数据需要加密吗
- 哪位大神会dbgrideh合并
procedure TWorkPLCHandlers.UpdateMachCommSta(IsLog: Boolean); //更新通信状态
begin
if IsLog then
AddMemoLog('UpdateMachCommSta:Begin '+BoolToStr(IsUptCommSta)+' IsConn:'+ BoolToStr(DMSYS.NTConn_SYS.IsConnected));
if IsUptCommSta then Exit; //与服务器未连接或者更新中 (not IsLineConn) Or
IsUptCommSta := True;
try
TThread.CreateAnonymousThread( // 创建一个单线程,完成ATask
procedure
begin
try
{TThread.Synchronize(nil,
procedure
begin }
try
With DMSYS.NTDataSet_CommSta do
begin
Close;SQL.Clear;
SQL.Add('Update OLM_MachineLst_Sta Set CommState='+QuotedStr(CommState)+', CommDT=GetDate() ');
SQL.Add(' Where MachineID='+IntToStr(MachineID));
ExecSQL;
end;
IsUptCommSta := False;
except
on e:Exception do
begin
IsUptCommSta := False;
AddMemoLog('UpdateMachCommSta:1错误'+e.Message+' IsUpt:'+BoolToStr(IsUptCommSta));
end;
end;
if IsLog then
AddMemoLog('UpdateMachCommSta:End '+BoolToStr(IsUptCommSta));
// end)
except
on e:Exception do
begin
IsUptCommSta := False;
AddMemoLog('UpdateMachCommSta:2错误'+e.Message+' IsUpt:'+BoolToStr(IsUptCommSta));
end;
end;
IsUptCommSta := False;
end).Start;
except
on e:Exception do
begin
IsUptCommSta := False;
AddMemoLog('UpdateMachCommSta:3错误'+e.Message+' IsUpt:'+BoolToStr(IsUptCommSta));
end;
end;
end;