首页 / C# / c# – 暂停和恢复线程活动
c# – 暂停和恢复线程活动
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 暂停和恢复线程活动,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1811字,纯文字阅读大概需要3分钟。
内容图文
![c# – 暂停和恢复线程活动](/upload/InfoBanner/zyjiaocheng/796/e1278d8aa01c4e869c36ffe7e824e6e6.jpg)
我有一个线程,在某个时间间隔内将点添加到zedgraph组件上.我需要在按下复选框时暂停添加点,然后在再次按下该复选框时继续添加它们.以下是我对线程的看法:
public class myThread{
ManualResetEvent pauseResumeThread = new ManualResetEvent(true);
public void threadHeartrateGraph()
{
for (int k = 15; k < _hr.Length; k++)
{
pauseResumeThread.WaitOne();
if (HRDataSummary.threadPause == true)
{
break;
}
x = k;
y = _hr[k];
list1.Add(x, y);
_displayHRGraph.Invoke(list1, graph_HeartRate, _GraphName[0]);
graph_HeartRate.XAxis.Scale.Min = k-14;
graph_HeartRate.XAxis.Scale.Max = k+1;
Thread.Sleep(_interval * 1000);
}
}
catch (NullReferenceException)
{
}
}
public void play()
{
pauseResumeThread.Set();
}
public void pause()
{
pauseResumeThread.Reset();
}
}
然后,我从复选框中调用了播放和暂停线程.
private void checkBoxPause_CheckedChanged(object sender, EventArgs e)
{
if(checkBoxPause.Checked == true)
{
//HRDataSummary.threadPause = true;
checkBoxPause.Text = "Play >";
myThread mythread = new myThread();
Thread pause = new Thread(mythread.pause);
pause.Start();
}
if (checkBoxPause.Checked == false)
{
//HRDataSummary.threadPause = false;
checkBoxPause.Text = "Pause ||";
myThread mythread = new myThread();
Thread play = new Thread(mythread.play);
play.Start();
}
}
我错过了什么?或者是否完全错误地使用了ManualResetEvent?
解决方法:
首先,您全局声明myThread对象(只有一个!).
myThread heartGraph = new myThread()
然后你想在一个新线程中启动你的Worker-Method.
Thread worker = new Thread(heartGraph.threadHeartrateGraph);
worker.Start();
现在,您可以使用ManualResetEvent暂停/恢复工作.
if (checkBoxPause.Checked == true) {
//HRDataSummary.threadPause = true;
checkBoxPause.Text = "Play >";
heartGraph.pause();
} else {
//HRDataSummary.threadPause = false;
checkBoxPause.Text = "Pause ||";
heartGraph.play();
}
内容总结
以上是互联网集市为您收集整理的c# – 暂停和恢复线程活动全部内容,希望文章能够帮你解决c# – 暂停和恢复线程活动所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。