我的程序首先创建了一个TMemoryStream内存区, 有两个定时器,一个从数据库提取数据写入到该内存区;另外一个定时器从该内存区读取数据,并根据反馈信息修改内存区的部分内容。由于两个定时器同时修改同一内存区,导致程序出错。现在需要锁定该内存区,每次只供一个线程(定时器相当于线程)访问该内存区,如何实现?如何取得给内存区的句柄?interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
FBuf: TMemoryStream; public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FBuf:= TMemoryStream.Create;end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
//
end;procedure TForm1.Timer2Timer(Sender: TObject);
begin
//
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
FBuf: TMemoryStream; public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FBuf:= TMemoryStream.Create;end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
//
end;procedure TForm1.Timer2Timer(Sender: TObject);
begin
//
end;end.
解决方案 »
- 能帮忙把这些数据写入一下注册吗呀,谢谢了。
- delphi要怎么才能把sql的資料直接匯到*.dbf表中?---郁悶
- 关于oracle数据库中blob数据类型的保存问题????
- 再问关于Delphi访问Oracle的问题。谢谢各位帮忙。
- 好书有哪些??!!!!
- 查找字符串A是否在串B中用哪个函数
- 关于 query 对数据库修改的烦人问题!
- 请高手高手高高手回答的问题
- 关于DELPHI的SQL查询
- 怎样用MCI API播放MIDI文件?
- idhttp调用asp上传文件提示500 internal server error
- delphi 中TsmartQuery后有几个属性:sqlrefresh,sqllock代表什么,怎样使用呢 ?
代码锁定已经试过了,增加了一个TCriticalSection进行锁定,但是故障依旧To:ahjoe
我这段程序在其中一个定时器有大量内存操作时,另外一个定时器就会抛出异常:Access violation at address 0058BD2F in module 'Msg.exe'. Read of address 7FE97856大家还有没有好的建议或者方法?谢了先!