質問

アプリのハンドルの数が継続的に成長しているという問題があります。私はデバッグを行い、これが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.thread.threadクラスを使用してスレッドが作成されます。問題は、スレッドがハンドルを解放しないように見えることです。なぜなら、クリックすると、ハンドルの数が〜5程度であるためです。

問題は、system.threading.threadクラスによって作成されたすべてのハンドルを手動で解放するにはどうすればよいですか?

前もって感謝します。

役に立ちましたか?

解決

実際にハンドルを漏らしているわけではありません。ただし、GCがまだ収集していないということです。ボタンハンドラーのコードを変更して、500個のスレッドなどをループして作成し、数回押してみてください。ハンドルが収集されている可能性があります。

他のヒント

スレッドハンドルを手動で解放する必要はありません。 Thread インスタンスで十分です。スレッドが実行されなくなり、それに対するすべての参照が削除されていることを考えると、Gargabeコレクターは次のコレクションのハンドルを解放します。

あなたの場合、スレッドが終了するようには見えません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top