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