none
Windowsサービスでスレッドを生成するとハンドルリーク RRS feed

  • 質問

  • こんにちは。

    Windowsサービスを使用して

    こんにちは。

    VisualStudio2005(C++) Windowsサービスを使用して開発しております。

    サービスが開始された時にスレッドを生成して処理をさせたいのですが、
    スレッドを開始して終了するとハンドルリークしてしまい開放されません。
    (ハンドルリーク数はタスクマネージャーのプロセスで見ています。)
    ちなみにDialogアプリケーションでプロジェクトを起こし同じソースを貼り付けて実行すると
    ハンドルリークは起きませんでした。

    どなたかわかる方ご教授頂けないでしょうか?

    static void thread_test()
    {
     Thread::Sleep(1000);
    }

    virtual void OnStart(array<String^>^ args) override
    {
     workerThread = gcnew Thread(gcnew ThreadStart(thread_test));
     workerThread->Start();
     workerThread->Join();
     workerThread->Abort();
    }

    OS:Windows XP - VisualStudio2005

     

     

    2006年12月26日 6:03

すべての返信

  • C++/CLI だかなんだかそのへんはよく知らんけど、そのスレッドは OnStart を抜ける前に終了するんだよね?
    だったら、その workerThread を OnStart 内のローカル変数に置き換えるだけでいいんじゃない?
    2007年1月7日 22:53