當我在一個漫長的過程中使用被調用的等待窗體的線程時,出現了錯誤。錯誤:線程在c#Windows應用程序中被中止
「的類型 'System.Threading.ThreadAbortException' 未處理的異常出現在 System.Windows.Forms.dll中
其他信息:線程已被中止。」
有時我的代碼運行良好,但有時會出現此錯誤。
class ProgressCLS
{
private static Thread th = new Thread(new ThreadStart(showProgressForm));
public void startProgress()
{
th = new Thread(new ThreadStart(showProgressForm));
th.Start();
}
private static void showProgressForm()
{
Waiting sForm = new Waiting();
sForm.ShowDialog();
}
public void stopProgress()
{
th.Abort();
th = null;
}
}
我得到了showProgressForm()
方法這個錯誤在sform.ShowDialog()
線
,我叫這個類的主要程序是這樣的:
ProgressCLS PC = new ProgressCLS();
PC.startProgress();
TodayDate = txtDate.SelectedDateTime.ToString("yy-MM-dd");
ClearField();
CalculateMSG();
tabControl1.SelectedIndex = 1;
btnShowFolderLocal.Enabled = true;
btnShowFolderTop.Enabled = true;
btnShowDpsFailed.Enabled = true;
btnShowDpsFailed2.Enabled = true;
btnShowFolderTopic.Enabled = true;
ShowMSGButtonClicked = true;
PC.stopProgress();
什麼想法?
這是因爲你使用了Thread.Abort(),並且你有一個try/catch-em-all語句,你沒有發佈。不要捕獲ThreadAbortException。 –
您不需要單獨的線程來顯示進度表單。用'Show'而不是'ShowDialog'顯示*非模態*形式。如果要報告其他任務/線程的進度,請使用「進度」並訂閱其事件 –
[C#窗體控件不會使用多線程更新]的可能重複(http://stackoverflow.com/questions/38588884/ c-sharp-form-controls-wont-update-with-multithreading) –