我自己写了一个过程 myProc(str : string);
想在线程中使用同步myThread.Synchronize (myProc);
但是,DELPHI的Synchronize中用的方法必须是无参数的,那该怎么办呢?有什么好的解决方法吗?
想在线程中使用同步myThread.Synchronize (myProc);
但是,DELPHI的Synchronize中用的方法必须是无参数的,那该怎么办呢?有什么好的解决方法吗?
解决方案 »
- 对于初学者,短期内要编程出一个项目软件,最大的困难是什么?
- 问个比较弱的问题,FastMM怎么用?
- 急急急!!!如何把word文档导入到sqlserver里对应的记录里
- 怎样在系统中注册微软通讯控件TMsComm(无内容)急!!在线等待!
- 请问一个DBGRID(EHLIB)的单元格宽度的问题。
- 打印机问题
- 关于网页的自动提交(刚发了一贴结果没显示出来,重发一贴)
- 怎样控制RichEdit的滚动条滑块的位置?
- 为什么我的可用分一直未长,我已经是CSDN成员两天了?哪位好心人提示一二,谢谢!
- 编译时出小错误码为何?
- TTreeView的ShowLines属性简单问题! 200409
- 开发过DB组件(数据感知控件)的近来一起探讨! 200409
Synchronize(这里是线程参数);Synchronize是叫VCL的主线程安全执行VCL方法,U know?
怎么不可以?
用
TRTLCriticalSection比用Synchronize好多了
public
procedure Acquire; virtual;
procedure Release; virtual;
end;TCriticalSection = class(TSynchroObject)
protected
FSection: TRTLCriticalSection;
public
constructor Create;
destructor Destroy; override;
procedure Acquire; override;
procedure Release; override;
procedure Enter;
procedure Leave;
end;{ TSynchroObject }procedure TSynchroObject.Acquire;
begin
end;procedure TSynchroObject.Release;
begin
end;{ TCriticalSection }constructor TCriticalSection.Create;
begin
inherited Create;
InitializeCriticalSection(FSection);
end;destructor TCriticalSection.Destroy;
begin
DeleteCriticalSection(FSection);
inherited Destroy;
end;procedure TCriticalSection.Acquire;
begin
EnterCriticalSection(FSection);
end;procedure TCriticalSection.Release;
begin
LeaveCriticalSection(FSection);
end;procedure TCriticalSection.Enter;
begin
Acquire;
end;procedure TCriticalSection.Leave;
begin
Release;
end;
2 线程执行操作前Enter
3 线程执行操作后Leave4 退出系统前释放对象