private bool IsRun;
private void stop_Click(object sender, EventArgs e)
{
IsRun = false;
StreamWriter sw = File.AppendText(@"d:\myserver.txt");
sw.WriteLine(string.Format("停止:启动时间{0}", DateTime.Now));
sw.Close();
}
private void begin_Click(object sender, EventArgs e)
{
IsRun = true;
while (IsRun)
{
try
{
StreamWriter sw = File.AppendText(@"d:\myserver.txt");
sw.WriteLine(string.Format("启动:启动时间{0}", DateTime.Now));
sw.Close();
}
catch (Exception ex)
{
throw ex;
}
System.Threading.Thread.Sleep(10000);
}
}
}
当按下按钮beigin后。。为什么stop按钮无法被按下。。好像假死的状态?????????????
你这样搞当然不行,你这样等同于在一个程序里同时运行两个子程序,:begin_Click是一个子程序,stop_Click又是一个子程序,当你点击begin后程序开始死循环,你写的这个System.Threading.Thread.Sleep(10000)并不代表程序停止1秒再执行,它是一直在执行着,只是每延时1秒执行一次,当第一个程序还没结束(当然除了你把进程结束掉外,永远不可能结束)你却点击stop运行第二个子程序,一般的程序不可能同时运行多个子程序,除非用线程启动多个子程序,我把你的改一下就不会错了:
首先引用命名空间:
using System.Threading;
bool isrun=true;
Thread th;
private void stop_Click(object sender, EventArgs e)
{
th.Abort();//结束线程
}
private void begin_Click(object sender, EventArgs e)
{
th= new Thread(new ThreadStart(startpp));//用线程调用方法
th.Start();//启动线程
}
void startpp()
{
while (IsRun)
{
try
{
StreamWriter sw = File.AppendText(@"d:\myserver.txt");
sw.WriteLine(string.Format("启动:启动时间{0}", DateTime.Now));
sw.Close();
}
catch (Exception ex)
{
throw ex;
}
System.Threading.Thread.Sleep(10000);
}
}
受教了
System.Threading.Thread.Sleep(10000);
不是在这停了吗,你要开另外一个线程去做 begin_Click的事。