簡體   English   中英

偶爾線程中止異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM