先在这里记录下,这个窗体假死的事情。
场景是这样的,c# winform或者wince设备在页面跳转之后,会加载一个数量非常大的list数据到datatable中,在跳转过程中,UI窗体在渲染的过程中,加载大量的数据就会造成窗体假死的现象。
解决的大体思路:建立两个线程,一个线程用来作为UI线程渲染窗体空间,另外一个线程用来作为非UI线程来加载数据集。
解决的详情代码:.
//声明一个委托类型
public delegate void SearchEventHandler(int queryType, string text);
public void searchFromOtherController(int queryType, string text)
{
Thread newThread = new Thread(new ThreadStart(delegate { handlerForThreadStart(queryType, text); }));
newThread.Start();
}
public void handlerForThreadStart(int queryType, string text)
{
SearchEventHandler handler = new SearchEventHandler(searchList);
this.BeginInvoke(handler, queryType, text);
}
声明一个委托类型
192
//public delegate void SearchEventHandler(int queryType, string text);
定义一个委托对象
public SearchEventHandler handler = new SearchEventHandler(searchList);
//给委托对象赋值
handler = searchList;
其他控制器调用该方法
//public void searchFromOtherController(int queryType, string text)
//{
// Thread notuithread = new Thread(new ThreadStart(handlerForThreadStart));
// notuithread.Start();
//}
//public void handlerForThreadStart()
//{
// SearchEventHandler handler = new SearchEventHandler(searchList);
// handler();
//}