16,549
社区成员
发帖
与我相关
我的任务
分享
Catch Ex As Exception
Finally
If ThreadState.Aborted Then
Debug.Print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
End If
End Try
你帮我看看这个地方,是什么原因引起的ThreadState.Aborted呢,VB.net里面有没有简单点的方法让一个线程可以单独运行,阻塞掉别的线程呢,C#里面有个WaitOne,可vb.net里不知道是什么呀。。。
public class WorkHelper : IDisposable
{
int totalCounts;
ManualResetEvent mre;
public WorkHelper(int totalWorkCounts)
{
mre = new ManualResetEvent(false);
totalCounts = totalWorkCounts + 1;
}
public void CountDown()
{
if (Interlocked.Decrement(ref totalCounts) <= 0)
{
mre.Set();
}
}
public void WaitAll()
{
CountDown();
mre.WaitOne();
}
#region IDisposable 成员
void IDisposable.Dispose()
{
((IDisposable)mre).Dispose();
}
#endregion
}
~~~
using(WorkHelper wh=new WorkHelper(500))
{
for(int i=0;i<500;i++)
{
ThreadPool.QueueUserWorkItem(_=>{
//bla, bla, bla....
wh.CountDown();
});
wh.WaitAll();
}
//final exit
}