C#多线程问题(从不同步的代码块中调用了对象同步方法。)
代码如下:
private void button4_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(new ThreadStart(a));
t1.Start();
}
public void a()
{
Monitor.TryEnter(this, 5000);
//
///程序代码,执行正常
//
for (int i = 0; i < 4; i++)
{
Thread.Sleep(800);
}
Monitor.Exit(this);
}
执行上面程序,如果只通过点击1,2次,或是隔一段时间才点击,那程序是没有问题的。但若是连续快速点击,Monitor.Exit(this);就会提示“从不同步的代码块中调用了对象同步方法。”这个异常,把5000调到10000情况会有所改善。但这样太慢了,我是要把这段东西放在timer里面的。请问高手为什么会引发这个问题?怎样解决?