private bool isrun;
protected override void OnStart(string[] args)
{
isrun =true;
while (isrun)
{
try
{
StreamWriter sw = File.AppendText(@"d:\myserver.txt");
sw.WriteLine(string.Format("服务启动,启动时间{0}", DateTime.Now));
}
}
catch (Exception ex)
{
WirteWinLog(ex);
}
System.Threading.Thread.Sleep(10*1000);
}
}
protected override void OnStop()
{
isrun=false;
StreamWriter sw = File.AppendText(@"d:\myserver.txt");
sw.WriteLine(string.Format("服务停止,启动时间{0}", DateTime.Now));
sw.Close();
}
为什么服务发布后无法停止呢????
因为 你的service 永远不会从 onstart method里退出. 一直在while loop里 运行, onstop 没有机会执行。
你可以用一个 backgroundWorker, onstart 里 初始化worker, 工作在 worker 里做, onstop把worker停止。
isrun=false;我不是在stop中执行了这个吗?怎么不能停止呢。。可否说的详细点。。难道OnStart中要怎样才行?????
把你的isrun设置为静态的试试。
为什么要静态?不是全局变量吗
@彬彬@科比:
但是那个类的实例不一定就是全局的,启动时实例化那个类,停止时再次实例化,那么内部的变量就是2个不同实例的变量了啊。
你是如何判断 无法停止的?在本地先测试,然后安装后在服务列表里停止 ,再查找原因