非阻塞(非同步)线程切换输入法死机问题!!!

                            
编写了一个程序,主界面(主线程)负责图像处理保存,后台线程负责发送数据到服务器。辅助线程的Execute中,调用另一个TransData方法。   
   
  Execute的代码:  
  procedure   TTransThread.execute;  
  begin  
      inherited;  
      //Synchronize(TransData);       阻塞(同步)方式,主界面切换输入法正常  
      TransData;                                     非阻塞(非同步),主界面切换输入法屏幕死屏,输入法出不来,直到TransData调用完毕才能正常显示  
  end;  
   
  TransData的代码模型:  
  procedure   TTransThread.TransData;  
  begin  
      while   true   do  
      begin  
          for   i:=0   to   服务器结点数量-1   do  
          begin  
              for   j:=0   to   图像数量-1   do  
              begin  
                  SendImage(j,i);//此过程是另一个C++的DLL提供的方法,因图像比较大,所以比较费时  
                  application.ProcessMessages;  
              end;  
              application.ProcessMessages;      
          end;  
           
      end;  
  end;  
   
  该如何解决非阻塞方式下,切换输入法时候的死机现象?  
   
  发现其实死机时候,线程是处于调用SendImage(j,i);的状态,该如何解决。  
   
   
  另外:  
  如果在Execute中采用阻塞方式的话,那么由于后台一直循环发送,导致主界面全部阻塞,点任何按钮都没反应。因此我采用的非阻塞方式的。  
   
  如果能给出好的思路,给100分,能给出解决办法的,给200分  
   
   
 

查看回复

相关问题