private void BeginHandle()
{
lock (_dh)
{
Monitor.Enter(_dh);
while (_dh.CurrentIndex < _dh.Total)
{
this.WriteLog("线程-" + Thread.CurrentThread.Name + "开始处理第" + _dh.CurrentIndex.ToString() + "项");
HandleStart(_dh.DataList[_dh.CurrentIndex], _dh.CurrentIndex);
this.WriteLog("线程-" + Thread.CurrentThread.Name + "完成第" + _dh.CurrentIndex.ToString() + "项");
_dh.CurrentIndex++; }
Monitor.Wait(_dh); }
}
private void btnBegin_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
Thread t = new Thread(new ThreadStart(delegate
{
BeginHandle();
}));
t.Name = "T" + i.ToString();
t.IsBackground = true;
t.Start();
}
}如上代码 为什么进不了多线程 总是第一个线程在执行
{
}
你用了LOCK当然只能一个线程运行了