我想在主程序中非阻塞地调用多个Dll,各个Dll一被调用即开始运行。
目前想到的一个方法是对一个DLL起一个线程,然后在线程内调用dll。
但对线程不太熟悉而且容易出错,有没其它更好的实现方式?
目前想到的一个方法是对一个DLL起一个线程,然后在线程内调用dll。
但对线程不太熟悉而且容易出错,有没其它更好的实现方式?
解决方案 »
- D7中TTable控件怎么获取和设置选中行
- 请问有没有类似DBComboBox的下拉控件,但是保存的是Itemindex,不是ItemString
- 如何控制TRxRichEdit控件中图片,紧急!!!!!
- ACCESS库把日期型用'2004-11-29'这样的字符型来储存的。那我能用SQL在adoquery中进行日期函数的操作吗?
- win2000和xp中怎么能让我的进程不能被关闭掉?
- 中国人都看到这段话就好了
- 在WindowsXP 环境下,Delphi的TOleContainer 不能正常显示 Office文档而BMP没有问题,请问谁了解这些内容?如何解决?
- 调用过程
- 如何取得拔号上网反回来的动态IP。
- 急:Delphi7中调用SQL动态轮询查询数据库导致虚拟内存激增,最终堆栈溢出,如何解决?
- 软件开发QQ群:5053624 欢迎高手们加入
- 求思路,DELPHI倉位圖的創建,根據不同的值顯示不同顏色
在主程序中应该也不会很慢,也不需要多线程
////////////////////////////////////
DLL源代码:
library Project2;uses
SysUtils,
Classes,{$R *.RES}
var
ccc: Pchar;
procedure InputCCC(Text: Pchar);stdcall;
begin
ccc := Text;
end;exportsInputCCC,begin
end.调用方源代码:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;Edit1: TEdit;
procedure Button1Click(Sender: TObject);private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure InputCCC(Text: Pchar);stdcall;External'project2.dll';procedure TForm1.Button1Click(Sender: TObject);
var
Text: Pchar;
begin
Text := Pchar(Edit1.Text);InputCCC(Text);//为了实验DLL中的全局变量是否在各个应用程序间共享
end;
感觉这种方法也不适合,因为程序中各个dll是同时运行的,所以比如我在Button1Click调用dll1那dll2就停在那儿了。
那么你想同时调用里面的Dll,则可以用线程了,在不同纯程中调用不同的DLL
这样就可以达到同时调用Dll了。
//定义一个线程
TAccountThread=class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;