“应用程序的OS或者是OS的版本不正确” 是怎么回事呀?(100分)

D

darnis

Unregistered / Unconfirmed
GUEST, unregistred user!
整个过程是在这样的:

在线程里有一个接口属性,这个接口属性在Execute 时被正确的赋予了接口的引用。
但是在创建这个线程的主进程中通过这个接口属性访问对象时就会出现如题的异常信息,
请问这究竟是怎么回事呀?
 
操作系统或者是操作系统的版本不正确。
你使用的服务的操作系统版本是什么? Windows9x /NT Unit ...
输入的类型库的版本也正确吗》
 
本机调试,Window 2000server,
这个奇怪的问题不是说,都是这样的。详细跟你说一下情况:
我是创建了一个线程来驱动 AutoCAD,线程如下:

TCADDrive = class(TThread)
private
FController: IAcadApplication

public
property Controller: IAcadApplication read FController;
...
end;


procedure TCADDrive.Execute();
begin
..
connect
// 连接到AutoCAD的函数,这里已经把 FController 正确地引用了IAcadApplication,
// 这里也可以通过 Controller 来进行对 AutoCAD的操作了,但是下面的。。。
..
end;

这里一个过程创建了线程的一个实例,

procedure Test();
var
tst: TCADDrive;
begin
tst:=TCADDrive.Create(false);
tst.waitfor;
tst.controller.visible:=true

// 这里就会出现如题 的异常。 ????????????????????????
end


如果不放到线程是啥问题都没有的。 :)
 
将 tst 高为全局变量试试,是不是因为退出过程时,释放了它。
 
有很多是不能放到主线程之外的代码中执行的, 是不是这个原因? 你可以这样看看
把有关代码放到 Synchronize里面调用试试。。。
 
谢谢 tseug
谢谢 jsxjd

我按 tseug 的说法把 connect 放到 Synchronize 里调用后,问题解决了。
:)

再次谢谢 tseug
 
多人接受答案了。
 
顶部