仿照例子做了个多线程,但运行时发现句柄一直再增加,内存也不能释放,严重时存储文件会导致out of system resources! 如何解决呢?function MyFun(p: Pointer): Integer; stdcall;
begin
BytesToRead:=11;
SI:=SI_Read(devHandle,@bufferIn,BytesToRead,BytesSucceed);
datausb:= BufferIn[2]*10+BufferIn[3]+BufferIn[4]*0.1+BufferIn[5]*0.01+BufferIn[6]*0.001;
datausb_e:=-(BufferIn[8]+BufferIn[9]*0.1+BufferIn[10]*0.01+BufferIn[11]*0.001);
form1.Edit1.Text:=FloatTOStr(datausb);
form1.ListBox2.items.add(FloatTOStr(datausb));
form1.Edit3.Text:=FloatTOStr(datausb_e);
Result := 0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ID: THandle;
begin
CreateThread(nil, 0, @MyFun, nil, 0, ID);
end;
begin
BytesToRead:=11;
SI:=SI_Read(devHandle,@bufferIn,BytesToRead,BytesSucceed);
datausb:= BufferIn[2]*10+BufferIn[3]+BufferIn[4]*0.1+BufferIn[5]*0.01+BufferIn[6]*0.001;
datausb_e:=-(BufferIn[8]+BufferIn[9]*0.1+BufferIn[10]*0.01+BufferIn[11]*0.001);
form1.Edit1.Text:=FloatTOStr(datausb);
form1.ListBox2.items.add(FloatTOStr(datausb));
form1.Edit3.Text:=FloatTOStr(datausb_e);
Result := 0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ID: THandle;
begin
CreateThread(nil, 0, @MyFun, nil, 0, ID);
end;
解决方案 »
- 100分求助啦
- 这个sql语句有什么问题 ?
- 问个listbox的问题!
- 这个API我在DELPHI如何申明使用?急!(100分)
- IdFTp组件的ProxyType如何设置?
- 求助高手,很急的!
- 请问,再什么地方可以下载到Deliphi里全部组件的属性,方法,事件详细介绍的电子书?
- 急呀!!
- 终于搞清楚了金字塔的问题了 散分!(希望我能有更多的金字塔),顺便!新年前两个星期快乐
- 欢迎DELPHI爱好者加入DELPHI技术交流QQ群:31083104!
- delphi7 ADOConnection1 连接远程mysql的问题
- 用ado连接局域网sql server2005时出错:数据库不存在或是拒绝访问
form1.ListBox2.items.add(FloatTOStr(datausb));
form1.Edit3.Text:=FloatTOStr(datausb_e);
这些都是线程不安全的
这里有好的例子:http://www.cnblogs.com/del/category/174761.html
SI:=SI_Read(devHandle,@bufferIn,BytesToRead,BytesSucceed);引起问题的主要原因好像就是1楼、5楼所说的,在时钟里创建线程,如果不通过时钟读取数据,还有其他的方法吗?刚接触DELPHI,请指教!