关于线程同步的问题,急!!
以下的代码,也知没有同步肯定错误,但不知如何同步,网上资料看了看,因为是第一次接触线程,没有真正适合或看的懂的,有知道的大虾可否指点一二。
procedure SendThread.Execute;
var
SendMobile,SendSMS:string;
Fitem:Tlistitem;
begin
while not terminated do
begin
with datamodule1.ADOSendFcsM do
begin
close;
sql.Clear;
sql.Add('select * from sendFcsM');
open;
if recordcount>0 then
begin
while not eof do
begin
mainfrm.sendmessage:='';
mainfrm.SendPhoneStr:='';
mainfrm.sendmessage:=trim(fieldbyname('SendFcStr').AsString);
mainfrm.SendPhoneStr:=trim(fieldbyname('SendFcsMobile').AsString);
mainfrm.Sendsms; //发送短信
//显示在列表中
SendMobile:='';
SendSMS:='';
SendMobile:=trim(fieldbyname('SendFcsMobile').AsString);
SendSMS:=trim(fieldbyname('SendFcStr').AsString);
Fitem:=mainfrm.listview2.Items.Add;
if InforConFrm.StatusBar1.Panels.Items[1].Text='信息发送成功' then
begin
Fitem.ImageIndex:=2;
with datamodule1.ADOMessSend do //保存的到已发送列表中
begin
close;
sql.Clear;
sql.Add('select * from Messsend');
open;
append;
fieldbyname('Mobile').AsString:=SendMobile;
fieldbyname('SendMessage').AsString:=SendSMS;
fieldbyname('SendDate').AsString:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);
fieldbyname('SendUser').AsString:='FCSSend';
post;
end;
delete; //保存后删除
ExecSQL
end else
begin
Fitem.ImageIndex:=0; //Fitem.ImageIndex:=2;是发送成功
next;
end;
Fitem.SubItems.Add(SendMobile);
Fitem.SubItems.Add(SendSMS);
Fitem.SubItems.Add(datetimetostr(now()));
end;
end;
end;
end;
end;
[解决办法]