线程问题
初次点击某按钮,执行某方法,再次点击,停止执行。再次点击,继续执行。该过程是否能用线程解决,该如何解决。本人对线程不了解,望高手指教。
Thread t = null; int i = 1; private void button1_Click(object sender, EventArgs e) { if (i % 2 != 0) t = new Thread(new ThreadStart(Start)); else t = new Thread(new ThreadStart(End)); t.Start(); i++; } private void Start() { MessageBox.Show("我是线程,开始工作!"); if(t != null) t.Abort(); } private void End() { MessageBox.Show("我是线程,结束工作!"); if(t != null) t.Abort(); }
EventWaitHandle eventWait = new EventWaitHandle(true, EventResetMode.ManualReset);//用true表示eventWait是无效的,遇到eventWait.WaitOne();也不会阻止
eventWait.WaitOne();//这里请注意,只有使用过eventWait.Reset();之后它才会阻止进程,但是如果使用过一次eventWait.Set();之后它又无效了
private void btn_Click(object sender, EventArgs e) { if (isWait) {//解除eventWait.WaitOne();的阻止,并且这时eventWait无效,下一次运行到这个地方WaitOne();的时候也不会阻止 eventWait.Set(); } else {//让eventWait生效,当运行到循环中eventWait.WaitOne();语句时等待 eventWait.Reset(); } isWait = !isWait; }