c#子線程執行完怎么通知主線程


 

定義一個委托實現回調函數
public delegate void CallBackDelegate(string message);

程序開始的時候
//把回調的方法給委托變量
CallBackDelegate cbd = CallBack;
//啟動線程
Thread th = new Thread(Fun);
th.Start(cbd);//開始線程,代入參數

//線程執行的方法 參數是個委托, 線程中參數需要用object類型.
public void Fun(object o)
{
        //這里是你的操作代碼,循環,根據條件退出while
	while(true)
        {
        }
        //把傳來的參數轉換為委托
	CallBackDelegate cbd = o as CallBackDelegate;
        //執行回調.
	cbd("這個線程傳回的信息");
}

//回調方法
private void CallBack(string message)
{
        //主線程報告信息,可以根據這個信息做判斷操作,執行不同邏輯.
	MessageBox.Show(message);
}
 
        
比如要在剛加載的時候進行網絡請求操作,如果直接在UI線程中執行操作的話,那么界面就會是一片空白,然后出現程序沒有響應的狀態,用戶容易以為是程序死了。如果只是在后台開一個線程然后在該線程中執行操作的話,界面雖然不是一片空白,但是用戶無法做其他操作,如果點擊某個按鈕,那么還會出現程序沒有響應的狀態。
而如果用上面的回調方法的話,就可以解決上面的問題,所以如果有比較耗時的操作,那么使用回調是一個不錯的選擇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM