已经放入了子线程执行,为什么还会导致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();//
}