class myclass
{
private Semaphore _sync;
myclass ()
{
_sync = new Semaphore(1,1);
}
doasync()
{
_sync.WaitOne();
//do some stuff
_sync.Release();
}
}
somefunctionsomewhere()
{
var myobject = new myclass();
//spawn 100 threads that all call myobject.doasync()
}
上記は安全でクリーンですか?100 個のスレッドすべてが非同期処理を完了すると、_sync が破棄され、myclass が収集されますか?
そうでない場合、 _sync.Dispose() を呼び出すタイミングを知る最良の方法は何ですか?