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()?