//一个串口设备的二次开发接口
API api = new API();//载入
private void main_load()
{
  Thread a = new Thread(new ThreadStart(ThreadInit));
  a.Start();
}//线程执行体
private void api_init()
{
  //二次接口的初始化,需要5秒左右的初始化时间
  api.init();
}//线程入口
private void ThreadInit()
{
  api_init();
}===============================如上面所示,api.init()方法需要占用5秒左右的时间。为了避免主程序UI线程假死,我把它的初始化放入到了线程去执行。可是依然会假死。我是不是哪里做错了呢?请各位大师帮忙解答,感激不尽。

解决方案 »

  1.   

    用委托异步操作,执行了就立即返回做下面的,前面的事不用管的MethodInvoker  pMethodInvoker =    new MethodInvoker(ThreadInit);
    pMethodInvoker.BeginInvoke(null, null);
      

  2.   

    Thread a = new Thread(new ThreadStart(ThreadInit));
    a.IsBackground = true;
    a.Start();
      

  3.   

    感谢几位的回答把IsBackground设为TRUE一样会假死的。委托也不是问题所在,一样不行。
      

  4.   

    tryThread a = new Thread(new ThreadStart(ThreadInit));
    a.IsBackground = true;
    a..Start();
    private void ThreadInit()
    {
      MethodInvoker mi = new MethodInvoker(api_init);
      this.BeginInvoke(mi);
    }private void api_init()
    {
      //二次接口的初始化,需要5秒左右的初始化时间
      api.init();//
    }