有个简单的线程,内面运行一个函数:(FHTTPRIO1 as IZipFile).ResultString
其目的是通过连接web services返回字符串. 其中FHTTPRIO1为线程内创建,
IZipFile为通过WSDL文件生成,ResultString为接口函数.
如果不放入线程,此函数可以返回正确值,放入后没有任何结果,有没有高人知道?
procedure j.Execute;
begin
   freeonterminate:=true;
   TmpStr:=(FHTTPRIO1 as IZipFile).ResultString;
   FMemo.Lines.Add(TmpStr);
   if terminated then exit;
end;

解决方案 »

  1.   

    procedure j.Execute;
    begin
       freeonterminate:=true;
       TmpStr:=(FHTTPRIO1 as IZipFile).ResultString;
       FMemo.Lines.Add(TmpStr);
       if terminated then exit;
    end;
    看看你的线程代码吧,   FMemo.Lines.Add(TmpStr);这一句是什么意思?多线程里面对于可视化vcl控件的访问,必须使用Synchronize,而不是直接操作。还有就是最后一句,if terminated then exit;
    你的线程是顺序执行下来了,里面不用判断这一句,自己自然就退出了。你不信就在这里面设置断点,一步一步的执行看看。