炫意html5
最早CSS3和HTML5移动技术网站之一

Task.WaitAll 线程阻塞导致主界面无法操作

前提:winform程序,系统启动时,
var task1 = Task.Factory.StartNew(IOCRepository.RegisterServie, param);
var task2 = Task.Factory.StartNew(Logger.Init);
Task.WaitAll(task1, task2);
////消息提醒
//var task3 = Task.Factory.StartNew(PreLoadData);
//Task.WaitAll(task3);

PreLoadData方法如下,init是5秒请求数据库消息表是否有未读的消息
/// <summary>
/// 初始数据预加载
/// </summary>
private static void PreLoadData()
{
//消息提醒初始化
ThreadPool.QueueUserWorkItem(new WaitCallback(PopupLoader.Init));
}
调用上面消息提醒(后台服务插入消息提醒到数据库,PreLoadData方法5秒自动扫描数据库是否有新消息,然后右下角弹窗)

但是出现了诡异的问题,在主界面闲置几分钟后,就会卡住(不是无响应,右下角消息提醒会一直触发,主界面所有按钮等元素都无法点击(假死))

初步分析是因为Task.WaitAll线程阻塞,但是没想到有什么好的办法来解决,大家有什么好办法吗?
谢谢

回答

建议试试 await Task.WhenAll();

炫意HTML5 » Task.WaitAll 线程阻塞导致主界面无法操作

Java基础教程Android基础教程