首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

已经放入了子线程执行,为什么还会导致UI线程假死?解决方法

2012-01-03 
已经放入了子线程执行,为什么还会导致UI线程假死?//一个串口设备的二次开发接口APIapinewAPI()//载入pri

已经放入了子线程执行,为什么还会导致UI线程假死?
//一个串口设备的二次开发接口
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线程假死,我把它的初始化放入到了线程去执行。可是依然会假死。我是不是哪里做错了呢?请各位大师帮忙解答,感激不尽。

[解决办法]
用委托异步操作,执行了就立即返回做下面的,前面的事不用管的

MethodInvoker pMethodInvoker = new MethodInvoker(ThreadInit);
pMethodInvoker.BeginInvoke(null, null);
[解决办法]
try

Thread 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();//
}

热点排行