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);
}