怎样避免出现冲突哪?
谢谢!
9 个解决方案
#1
代码贴出来
#2
......
uses unit2;//unit2声明公共读写函数;writetofile,readfromfile...
......
TwriteThread=class(TThread)
protected
procedure execute; override;
public
data:String;
end;
procedure TWriteThread.execute;
begin
enterCriticalSection(Csect);
writetofile(Data);
leaveCriticalSection(Csect);
end;
读从别的form直接进行。
读写还用了使用公共变量标志,ISwrite,Isread。操作前先判断一下,是否在读或写。
uses unit2;//unit2声明公共读写函数;writetofile,readfromfile...
......
TwriteThread=class(TThread)
protected
procedure execute; override;
public
data:String;
end;
procedure TWriteThread.execute;
begin
enterCriticalSection(Csect);
writetofile(Data);
leaveCriticalSection(Csect);
end;
读从别的form直接进行。
读写还用了使用公共变量标志,ISwrite,Isread。操作前先判断一下,是否在读或写。
#3
可以试试锁定文件
var
FileLock:TCriticalSection;
begin
FileLock:=TCriticalSection.Create;
FileLock.Acquire;//锁定文件
FileLock.Release;//释放文件锁定
end;
var
FileLock:TCriticalSection;
begin
FileLock:=TCriticalSection.Create;
FileLock.Acquire;//锁定文件
FileLock.Release;//释放文件锁定
end;
#4
使用ShanShiMin(Delphi+C#=我的最爱) 的方法后,同时还要使用阻塞,通道等技术防制同时对文件进行操作!
#5
delphi 和 windows 都提供了文件读写函数。
1:
assignfile();
reset();
rewrite();
blockwrite()
BlockRead();
closefile();
2:
filecreate();
fileopen();
filewrite();
fielread();
filecolse();
3:
createfile();
ReadFile();
writefile();
.
.
.
对于多线程读写二进制流来说,用哪组比较好?
1:
assignfile();
reset();
rewrite();
blockwrite()
BlockRead();
closefile();
2:
filecreate();
fileopen();
filewrite();
fielread();
filecolse();
3:
createfile();
ReadFile();
writefile();
.
.
.
对于多线程读写二进制流来说,用哪组比较好?
#6
to ntlan(清茶书香) 和 ShanShiMin(Delphi+C#=我的最爱) :
用异步I/O能实现吗?应怎样实现?
用异步I/O能实现吗?应怎样实现?
#7
请高手指点。
一旦解决就结贴。
一旦解决就结贴。
#8
可以这样解决
单独用一个线程写文件,别的线程需要写文件的时候,把数据通过线程消息发给这个线程。
单独用一个线程写文件,别的线程需要写文件的时候,把数据通过线程消息发给这个线程。
#9
在有多线程共享同一个全局变量时,访问变量是要加临界的。
#1
代码贴出来
#2
......
uses unit2;//unit2声明公共读写函数;writetofile,readfromfile...
......
TwriteThread=class(TThread)
protected
procedure execute; override;
public
data:String;
end;
procedure TWriteThread.execute;
begin
enterCriticalSection(Csect);
writetofile(Data);
leaveCriticalSection(Csect);
end;
读从别的form直接进行。
读写还用了使用公共变量标志,ISwrite,Isread。操作前先判断一下,是否在读或写。
uses unit2;//unit2声明公共读写函数;writetofile,readfromfile...
......
TwriteThread=class(TThread)
protected
procedure execute; override;
public
data:String;
end;
procedure TWriteThread.execute;
begin
enterCriticalSection(Csect);
writetofile(Data);
leaveCriticalSection(Csect);
end;
读从别的form直接进行。
读写还用了使用公共变量标志,ISwrite,Isread。操作前先判断一下,是否在读或写。
#3
可以试试锁定文件
var
FileLock:TCriticalSection;
begin
FileLock:=TCriticalSection.Create;
FileLock.Acquire;//锁定文件
FileLock.Release;//释放文件锁定
end;
var
FileLock:TCriticalSection;
begin
FileLock:=TCriticalSection.Create;
FileLock.Acquire;//锁定文件
FileLock.Release;//释放文件锁定
end;
#4
使用ShanShiMin(Delphi+C#=我的最爱) 的方法后,同时还要使用阻塞,通道等技术防制同时对文件进行操作!
#5
delphi 和 windows 都提供了文件读写函数。
1:
assignfile();
reset();
rewrite();
blockwrite()
BlockRead();
closefile();
2:
filecreate();
fileopen();
filewrite();
fielread();
filecolse();
3:
createfile();
ReadFile();
writefile();
.
.
.
对于多线程读写二进制流来说,用哪组比较好?
1:
assignfile();
reset();
rewrite();
blockwrite()
BlockRead();
closefile();
2:
filecreate();
fileopen();
filewrite();
fielread();
filecolse();
3:
createfile();
ReadFile();
writefile();
.
.
.
对于多线程读写二进制流来说,用哪组比较好?
#6
to ntlan(清茶书香) 和 ShanShiMin(Delphi+C#=我的最爱) :
用异步I/O能实现吗?应怎样实现?
用异步I/O能实现吗?应怎样实现?
#7
请高手指点。
一旦解决就结贴。
一旦解决就结贴。
#8
可以这样解决
单独用一个线程写文件,别的线程需要写文件的时候,把数据通过线程消息发给这个线程。
单独用一个线程写文件,别的线程需要写文件的时候,把数据通过线程消息发给这个线程。
#9
在有多线程共享同一个全局变量时,访问变量是要加临界的。