[英]Occasional thread abort exception
我從以前的開發人員那里繼承了一些代碼,該應用程序在執行特定任務時偶爾會出現線程中止異常。
private void popup()
{
Thread th = new Thread(() =>
{
try
{
OpenForm();
}
catch (ThreadAbortException ex)
{
Console.WriteLine("Thread was forcibly aborted");
}
});
th.Start();
while (fromflag)
{
}
th.Abort();
}
該線程打開一個帶有動畫加載 gif 的彈出窗口,從服務器下載文件,然后完成。 完成后,我將 fromflag 設置為 false。 我無法設置計時器,因為下載文件可能需要任何時間。
我怎樣才能以不同的方式編寫它,這樣我就不必使用 th.Abort 並且線程在完成時自行關閉?
您要在 anotehr 線程上打開表單? 這是一些非常糟糕的設計。
通常所有的表單都應該由 GUI 線程創建。 如果某個線程需要寫一些東西,那是Invoke 的目的。
如果沒有向我們展示在線程中運行的實際代碼(大概包含在 OpenForm() 中),我們根本無法幫助您進行調試。
雖然我可以理解程序員為什么使用這個快捷方式(根據顯示技術,執行空閑動畫可能需要額外的線程),但我仍然認為這是一個應該重新設計的糟糕設計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.