多线程刚刚学,还望不要拍砖..
问题描述:在一个方法内调用类中的mutex实例,报错误...但是直接调用mutex的对象没有问题...
public class MultiThreadDemo
    {
       public Mutex mu1 = new Mutex(true, "mu1");
        public void First(object obj)
        {
            System.Threading.Thread.Sleep(1000);
            DelAppendText del= obj as DelAppendText;
            del.Invoke("这是第一个方法");            this.mu1.ReleaseMutex();
        }        public void Sencond(object obj)
        {
            this. mu1.WaitOne();
            DelAppendText del = obj as DelAppendText;
            del.Invoke("这是第二个方法");
        }
    } public partial class FormMain : Form
    {
        MultiThreadDemo md = new MultiThreadDemo();
     }
private void btnStart_Click(object sender, EventArgs e)
        {
            Thread t1 = new Thread(md.First);
            Thread t2 = new Thread(md.Sencond);
            t2.Start(new DelAppendText(AppendText));
            t1.Start(new DelAppendText(AppendText));
            this.AppendText("线程启动完毕..");
            
        }        public void AppendText(string text)
        {
            if (InvokeRequired)
            {
                Invoke(new DelAppendText(AppendText), text);
            }
            else
            {
                this.txtResult.Text += text + Environment.NewLine;
            }
        }
        private void btnRelase_Click(object sender, EventArgs e)
        {
            md.mu1.ReleaseMutex();
        }
这样运行会报错,错误信息为:从不同步的代码块中调用了对象同步方法。
但是把代码中红色的部分注释掉,在主窗体中 触发btnRelase_Click 事件来使T2方法运行就不会有错小弟对这个错误消息很不理解,还有为什么这样会报错,而直接调用mutex(在不是他类中方法的内部调用就没问题呢...),求解惑