DLL中可以用多线程吗?(100分)

  • 主题发起人 主题发起人 留香客
  • 开始时间 开始时间

留香客

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DLL中封装了一个窗体,结果上面的button接受不到MOUSEENTER消息了,里面的多线程也老出错,DLL中可以用多线程吗?
 
DLL可以用线程。
如果你用Form的话最好封装成COM.
>button接受不到MOUSEENTER消息
可能与你的消息拦载有关系。
>多线程也老出错
多半是资源冲突。
 
多线程是在FORM中的,单独运行FORM是可行的,但一封装成DLL就不行了,FORM我是原封为动的加如了DLL的,为什么一调用就出错?
 
代码贴出来看看。
 
不好意思,我是为别人做的,不方便贴出来。
大体是这样的
exports
search;
在FORM中:
procedure tform1.search;
begin
tmytread.create;
end;
construction tmytread.create;
begin
...
end;
function tmytread,execute;
var
i:integer;
begin
for i:=1 to 100000do
if Mystringlist='Yes'
then
Mystringlist2.add(Mystringlist);

end;
 
怎么启动Form1的?
 
哦。我写错了
exports
begin
Act;
procedure begin
act(FatherFormHandle:cardinal);
var
form1:tform1;
begin
form1:=tfrom1.create(FatherFormHandle);
form1.show;
form1.search;
end;
在FORM中:
procedure tform1.search;
begin
tmytread.create;
end;
construction tmytread.create;
begin
...
end;
function tmytread,execute;
var
i:integer;
begin
for i:=1 to 100000do
if Mystringlist='Yes'
then
Mystringlist2.add(Mystringlist);

end;

 
可能这个问题太难了吧,这么久也没人回答阿,郁闷^^^^^^
 
我在多线乘中使用模式窗口,结果不能返回,如下:
function tmytread.execute;
var
MyValue:integer;
begin
MyValue:=form2.QueryValue;
end;

在FORM2中:
var
ReturnValue:integer;
function Tform2.QueryValue:integer;
begin
form2.showmodal;
result:=ReturnValue;
form2.close;
end;
procedure Tform2.Btn1.click(sender as object);
begin
ReturnValue:=1;
form2.close;
end;
运行之后点击Tform2.Btn1关不掉form2,如何解决?
 
感覺你的使用有點問題!
在線程中, 使用 Form, form.showmodal, 都有些問題的!
你必須同步vcl的消息循環
 
能详细一点吗?
 
后退
顶部