C#使用Monitor处理线程的挂起和恢复
2010-11-06 16:42
435 查看
1、定义锁定对像和线程对像
object lockOjbect = new object();
Thread updateThread = null;
2、开启新线程
updateThread = new Thread(new ThreadStart(updateRun));
updateThread.Start();
private void updateRun()
{
FileStream fs = null;
try
{
Monitor.Enter(lockOjbect);
//执行代码,此处代码要尽量短(很快执行完毕)且最容易被执行到
Monitor.Exit(lockOjbect);
}
catch (ThreadAbortException ex)
{
}
finally//清理代码
{
}
}
3、挂起、恢复线程
Monitor.Enter (lockOjbect);
if (MessageBox.Show("升级未完成,真的要取消吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
updateThread.Abort();
udateThread.Join();
lblInfo.Text = "升级已被取消";
Monitor.Exit(lockOjbect);
}
else
{
Monitor.Exit(lockOjbect);
}
object lockOjbect = new object();
Thread updateThread = null;
2、开启新线程
updateThread = new Thread(new ThreadStart(updateRun));
updateThread.Start();
private void updateRun()
{
FileStream fs = null;
try
{
Monitor.Enter(lockOjbect);
//执行代码,此处代码要尽量短(很快执行完毕)且最容易被执行到
Monitor.Exit(lockOjbect);
}
catch (ThreadAbortException ex)
{
}
finally//清理代码
{
}
}
3、挂起、恢复线程
Monitor.Enter (lockOjbect);
if (MessageBox.Show("升级未完成,真的要取消吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
updateThread.Abort();
udateThread.Join();
lblInfo.Text = "升级已被取消";
Monitor.Exit(lockOjbect);
}
else
{
Monitor.Exit(lockOjbect);
}
相关文章推荐
- C# 线程手册 第三章 使用线程 Monitor.TryEnter()
- C# 线程的挂起与恢复
- C# 挂起恢复运行线程代码
- C# 线程手册 第三章 使用线程 Monitor.TryEnter()
- C# 线程手册 第二章 .NET 中的线程 线程挂起与恢复
- Mark:使用线程处理(C# 编程指南)
- [C# 线程处理系列]专题二:线程的详细使用
- C#【控件使用/异常处理】richtextbox中,ScrollToCaret()造成的线程堵塞
- C# 挂起恢复运行线程代码
- C# 线程的挂起与恢复
- C# 挂起恢复运行线程代码
- C# 挂起恢复运行线程代码
- C#多线程开发2:线程挂起,恢复与中止等操作
- C# 线程手册 第三章 使用线程 Monitor.Wait() 和 Monitor.Pulse()
- C#使用后台线程BackgroundWorker处理任务的总结
- C# 线程手册 第三章 使用线程 Monitor.Enter() 和 Monitor.Exit()
- Java 多线程使用:线程的挂起与重新唤醒
- 23 C# 第十九章(一) 基于 .Net 4 TPL 的同步和线程处理模式
- C#使用NPOI处理大数据量EXCEl2007
- C#开发微信门户及应用(12)-使用语音处理