不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
测试Windows服务停止、启动对全局变量的影响
编辑:dnawo 日期:2009-08-18
Windows服务中有一全局变量,Windows服务停止、启动对全局变量会有什么影响?重新初始化?还是仍保持原先的值?做个测试:
Windows服务代码:
说明:Windows服务中声明了一全局变量status,初始值为true,定时器启动后将status值更改为false,测试停止、启动服务后,status值的变化情况。
测试日志:
引用内容
可见,停止再启动Windows服务后,status全局变量重新初始化为true。
Windows服务代码:
复制内容到剪贴板
程序代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Threading;
namespace WindowsService1
{
partial class TestWS : ServiceBase
{
private bool status = true;//全局变量
public TestWS()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Log("启动服务");
//定时器
System.Timers.Timer timer1 = new System.Timers.Timer();
timer1.Interval = 10 * 1000;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(Done);
timer1.AutoReset = true;
timer1.Enabled = true;
}
protected override void OnStop()
{
Log("停止服务");
}
/// <summary>
/// 定时任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Done(object sender, EventArgs e)
{
Log("TODO... status:" + status.ToString());
status = false;
}
protected void Log(string msg)
{
File.AppendAllText(@"c:\ws.log", string.Format("{0}:{1}\r\n",DateTime.Now.ToString("HH:mm:ss"),msg));
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Threading;
namespace WindowsService1
{
partial class TestWS : ServiceBase
{
private bool status = true;//全局变量
public TestWS()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Log("启动服务");
//定时器
System.Timers.Timer timer1 = new System.Timers.Timer();
timer1.Interval = 10 * 1000;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(Done);
timer1.AutoReset = true;
timer1.Enabled = true;
}
protected override void OnStop()
{
Log("停止服务");
}
/// <summary>
/// 定时任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Done(object sender, EventArgs e)
{
Log("TODO... status:" + status.ToString());
status = false;
}
protected void Log(string msg)
{
File.AppendAllText(@"c:\ws.log", string.Format("{0}:{1}\r\n",DateTime.Now.ToString("HH:mm:ss"),msg));
}
}
}
说明:Windows服务中声明了一全局变量status,初始值为true,定时器启动后将status值更改为false,测试停止、启动服务后,status值的变化情况。
测试日志:

17:05:11:启动服务
17:05:21:TODO... status:True
17:05:31:TODO... status:False
17:05:41:TODO... status:False
17:05:51:TODO... status:False
17:06:01:TODO... status:False
17:06:11:TODO... status:False
17:06:20:停止服务
17:07:56:启动服务
17:08:06:TODO... status:True
17:08:16:TODO... status:False
17:08:26:TODO... status:False
17:08:36:TODO... status:False
17:08:44:停止服务
17:05:21:TODO... status:True
17:05:31:TODO... status:False
17:05:41:TODO... status:False
17:05:51:TODO... status:False
17:06:01:TODO... status:False
17:06:11:TODO... status:False
17:06:20:停止服务
17:07:56:启动服务
17:08:06:TODO... status:True
17:08:16:TODO... status:False
17:08:26:TODO... status:False
17:08:36:TODO... status:False
17:08:44:停止服务
可见,停止再启动Windows服务后,status全局变量重新初始化为true。
评论: 0 | 引用: 0 | 查看次数: 5016
发表评论
请登录后再发表评论!