在程序中如何实现多个线程对TStringList型公共变量进行读取写入操作而不造成冲突? 用 METUX 、临界区等方法吧,很方便的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TCriticalSection可以组塞其他线程,可以满足你的需要,在读写的那一段代码,用这个括起来var cc:TCriticalSection; cc:=TCriticalSection.create; cc.Acquire; 组塞 。 你的读写的那一段代码 cc.Leave; 离开 cc.free; 添加一个同步变量uses Windows;var //定义成全局变量!! List_CS: TRTLCriticalSection;/要对List等进行操作时,设置同步,操作完成退出同步begin EnterCriticalSection(List_CS); try StringList1.Add('...'); finally LeaveCriticalSection(List_CS);//退出同步 end;end; 这样让同步工作由API来完成,你不用操心 另外,这两个函数在Windows Unit的定义procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection'; List_CS变量要创建吗,我用你上面的代码程序死了。 不好意思,我忘了不要创建的,但要初始化加上!!InitializeCriticalSection(List_CS); Delphi中关于时间类型数据的比较 如何通过程序将SQL Server的一个text字段的内容追加到另外一个text字段中, 请问vc 中的 alt 相当于delphi的什么概念? 如何叛断ServerSocket的接收信息类型? 关于截获键盘中文输入的问题 who can tell me??急急 在DELPHI里面如何给ACTIVECONTROL重新排序。 !!!帮我一把!!! 如何响应动态生成组件的事件?急!!! 真急死我了,关于delphi做cgi 如何挂接手写输入法 access 的表如何备份?
在读写的那一段代码,用这个括起来
var cc:TCriticalSection;
cc:=TCriticalSection.create;
cc.Acquire; 组塞
。
你的读写的那一段代码
cc.Leave; 离开
cc.free;
List_CS: TRTLCriticalSection;/要对List等进行操作时,设置同步,操作完成退出同步
begin
EnterCriticalSection(List_CS);
try
StringList1.Add('...');
finally
LeaveCriticalSection(List_CS);//退出同步
end;
end;
procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
加上!!InitializeCriticalSection(List_CS);