求教CreateThread创建一个线程的问题.回答正确马上给分.
CreateThread创建一个线程,这个函数如下
Function OpenServer(Connection:TADOConnection):Boolean;
{===========Connect A NET DATABASE====}
begin
  Try
    Connection.Connected:=True;
    OpenServer:=True;
  except
    OpenServer:=False;
  end;
end;
我是这样写的.
hthread:=CreateThread(nil,0,@OpenServer,ADOConnection1,0,ThreadID);
如何才能得到OpenServer的函数返回值逻辑型的呢??
最好请给段代码帮助我理解.谢谢

解决方案 »

  1.   

    在你的代码中OpenServer似乎可以不用,OpenServer的值和Connection.Connected一样,直接判断Connection.Connected不就行了!
      

  2.   

    同意 linx88(haozi) 的说法,一定要设置一个变量,把你的结果放到里面。其实象你这个问题不用很复杂的同步机制。下面代码可能绑到你。
    var
      ThreadResult: integer = -1 ;hthread:=CreateThread(nil,0,@OpenServer,ADOConnection1,0,ThreadID);Function OpenServer(Connection:TADOConnection):Boolean;
    {===========Connect A NET DATABASE====}
    begin
      Try
        Connection.Connected:=True;
        ThreadResult := 1 ;
      except
        ThreadResult:=0;
      end;
    end;如果 ThreadResult 为-1,线程未执行玩,为0线程执行完失败,为1线程执行完成功。不过在线程执行完,取得ThreadResult之后马上ThreadResult := -1 。
      

  3.   

    1.线程函数需要有一个32bit长的参数,integer就是,pointer,TObject都是。
    2。返回值也是这样的长度。
    3.需要声明成stdcall类型的
      

  4.   

    可否考虑发送消息出去啊?postMessage.