我想在多线程中调用一个函数
function GetListBoxText(mHandle: THandle; mStrings: TStrings): Boolean;请问具体该怎么实现?最好有代码解说

解决方案 »

  1.   

    注意同步即可,看线程向导中的注释,关于synchronize的
      

  2.   

    GetListBoxText仅仅只是取得ListBox当中的数据,只须发送一个消息即可,所以不需要同步,同步只在存在写入过程当中需要。
      

  3.   

    用事件与临界区都行~
    我是对对象进行保护~Uses
      SyncObjs;type
      TEnhancedCriticalSection = class(TCriticalSection)
      public
        function TryEnter: boolean;
      end;
    varimportCritSec: TEnhancedCriticalSection;procedure ImportOrders;
    begin
    importCritSec.Acquire;
      try
        try
         objImport := TOImport.Create(jobReq);
         objImport.Execute;
        finally
          if assigned(objImport) then
             objImport.Free;
        end;
      finally
        importCritSec.Release;
      end;
    end;
      

  4.   

    写一个类,继续于TThread,然后重载Execute过程。在execute写代码就是在线程当中执行了。如果需要访问VCL,主要是需要改写VCL对象的属性或数据等,为防止冲突,需要通过同步函数来调用。
      

  5.   

    严重同意 unsigned线程不是让人用来滥用的。
    同步只有在涉及读写的时候才需要。
      

  6.   

    严重同意liangpei2008用临界区保护起来如果函数不大,直接封到线程里去如果调用很频繁,放到动态库里去
      

  7.   

    VCL UI不是线程安全的,须用Sync方法