还是关于多线程的问题 同步
先上一段代码吧, 是一个小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.