簡體   English   中英

使用.NET System.Threading.Thread類處理泄漏

[英]Handle leaks with .NET System.Threading.Thread class

我有一個問題,我的應用程序中的Handles數量持續增長。 我進行了調試,發現這是由System.Threading.Thread類引起的,該類用於某些例程。 為了簡化調試,我創建了一個示例.NET應用程序:

    ...

    private void button1_Click(object sender, EventArgs e)
    {
        Thread t = new Thread(DoWork);
        t.Start();
    }

    public void DoWork(object parameter)
    {
        // Do something...
    }

    ...

每次單擊按鈕時,都會使用System.Threading.Thread類創建一個線程。 問題在於,看起來該線程不會釋放句柄,因為每次單擊都會導致句柄數量增加約5。

問題是:如何手動釋放System.Threading.Thread類創建的所有Handle?

提前致謝。

實際上並沒有泄漏手柄,只是GC尚未收集它們。 嘗試更改按鈕處理程序中的代碼,使其循環並創建500個線程或其他內容,然后嘗試按幾次,您可能會看到已收集了句柄。

您無需手動釋放線程句柄,只需刪除對Thread實例的所有引用就足夠了。 鑒於該線程不再運行並刪除了對其的所有引用,gargabe收集器將釋放下一個收集的句柄。

在您的情況下,線程看起來永遠不會完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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