定義一個委托實現回調函數
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線程中執行操作的話,那么界面就會是一片空白,然后出現程序沒有響應的狀態,用戶容易以為是程序死了。如果只是在后台開一個線程然后在該線程中執行操作的話,界面雖然不是一片空白,但是用戶無法做其他操作,如果點擊某個按鈕,那么還會出現程序沒有響應的狀態。
而如果用上面的回調方法的話,就可以解決上面的問題,所以如果有比較耗時的操作,那么使用回調是一個不錯的選擇