日期:2014-05-17  浏览次数:20814 次

还是关于多线程的问题 同步
先上一段代码吧, 是一个小Demo

C# code

namespace ThreadDemo
{
    public partial class Form1 : Form
    {
        bool Init = false;

        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread getpara = new Thread(GetPara);
            Init = false;
            getpara.Start();
        }

        //Get必须调用Show
        private void GetPara()
        {
            Show();

            Init = true;
        }

        //如果调用Show一定会触发Change事件
        private void Show()
        {
            Thread change = new Thread(Change);
            change.Start(new object());
        }

        //此处是一事件  可以在界面上触发
        private void Change()
        {
            if (Init == false)
                return;
            Thread setpara = new Thread(SetPara);
            setpara.Start();
        }

        private void SetPara()
        {
            ;//Set Para
        }
    }
}




这段代码会出现这样一个问题, 如果我多次且快速的单击Button1按钮, 会出现Init被多次重置为false, 而后被置为true, 导致判断失效

请问如何解决?? 谢谢!!!

初次接触线程同步的问题, 很是头疼

------解决方案--------------------
看看关于多线程关于“锁”的用法
------解决方案--------------------
多线程,用到lock ,Monitor,Mutex,Reader WriterLock.