程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 修改ui-C# click事件 多線程 異步 耗時 操作UI

修改ui-C# click事件 多線程 異步 耗時 操作UI

編輯:編程解疑
C# click事件 多線程 異步 耗時 操作UI

listbox做了個目錄(單層),點擊一條就在另一個控件加載相應的內容。這個加載過程是耗時操作。
所以考慮用異步,在click處理函數裡開了子線程。因為需要操作UI,所以在子線程裡調用invoke,但是無論使用invoke還是beginInvoke,那個加載內容的函數都是在UI線程上執行。這樣就會造成UI線程阻塞。
想實現的效果是,一次點擊之後馬上能響應下一次點擊同時把上一次點擊的加載線程結束掉而執行當前點擊的加載線程。或者在下一次點擊的時候判斷上一次是否加載完成,如果沒完成則提示,等待完成。
哪位熟悉這個的有什麼好辦法?

最佳回答:


如果原線程仍在執行的話是無法立即結束掉的,因為C#是托管代碼,需要通知真正的線程執行單元結束自己要花掉很長時間所以你的方法一不太好用。
方法二只需要聲明一個全局的線程對象在點擊時間發生後判斷下當前線程狀態就行了。
當前工作線程如果要調用UI線程顯示數據的話用這樣的語法:
工作線程:
{
Action act = ()=>{textBox1.Text = "1"};
textBox1.Invoke(act);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved