C# 窗口頁面卡的處理方案-異步編程委託

今天用winform作了一個小程序,主要是用於遠程數據的登陸採集,由於數據量很是大,到時每次點擊按鈕執行程序的時候界面都會出現假死狀態,具體表現是沒法拖動窗口,沒法最小化或關閉等,只能任務管理進程結束任務。小程序

由於代碼裏面循環操做的次數比較多,後來優化了也無果。也是找了下這方面的相關資料做下總結:多線程

一、定義委託對象異步

二、異步操做完成時需執行的方法函數

三、由於採集程序須要天天自動採集 因此添加了定時器的功能;其中的DownLoadCsv 就是耗時執行的方法優化

這樣一來界面就跟正常的同樣了。查了一下相關資料 使用CheckForIllegalCrossThreadCalls = false線程

以下解釋:orm

在多線程程序中,新建立的線程不能訪問UI線程建立的窗口控件,若是須要訪問窗口中的控件,能夠在窗口構造函數中將CheckForIllegalCrossThre對象

adCalls設置爲 false進程

相關文章
相關標籤/搜索