本实例主要实现下面三个基本功能
1、C#开发windows服务
2、禁止QQ等程序运行
3、为windows服务创建自动安装程序
下面针对这三个基本功能进行实现
一、C#开发windows服务
Windows服务在VS以前的版本中叫NT服务,在VS.NET启用了新的名称。用C#创建windows服务不是一件困难的事,下页针对服务创建、启动、停止做详细介绍
1、首先在vs中添加一winform程序KillService
2、在解决方案添加新项中添加Windows服务
3、打开服务页面,切换至代码页面有两个方法如下:
{
// TODO: 在此处添加代码以启动服务。
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
当服务启动之后一般会要求每隔几秒或者几分钟刷新一次数据,所以要用到一个定时器,在定时器里边进行业务操作。windows服务不能直接在VS下进行调试,所以可以选择使用日志形式记录服务的各种启动停止或者异常的状态。具体实现代码如下:
{
static System.Timers.Timer oTimer_Get = new System.Timers.Timer();
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
AutoLog = false;
FileLog.Success("服务已启动");
oTimer_Get.Enabled = true;
oTimer_Get.Interval = 10000;
oTimer_Get.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
}
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
FileLog.Success("开始发送");
oTimer_Get.Enabled = false;
try
{
//此处可进行编写详细的业务操作
}
catch (Exception ex)
{
FileLog.Error(ex.Source + "。" + ex.Message);
}
oTimer_Get.Enabled = true;
FileLog.Success("结束发送");
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
FileLog.Success("服务已停止");
oTimer_Get.Enabled = false;
}
}
文件记录类代码
/// 文件型日志记录
/// </summary>
public static class FileLog
{
private static string sFilePath = System.Configuration.ConfigurationSettings.AppSettings["UserLog"];
/// <summary>
/// 错误日志
/// </summary>
/// <param name="Message">错误内容</param>
public static void Error(string Message)
{
try
{
if (!Directory.Exists(sFilePath))
{
Directory.CreateDirectory(sFilePath);
}
string sFileName = sFilePath + "\\" + string.Format("{0}-Error.txt", DateTime.Now.ToString("yyyy-MM-dd"));
string sContent = string.Format("{0}-- {1}\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Message);
FileStream fs = new FileStream(sFileName, FileMode.Append);
Byte[] b = Encoding.Default.GetBytes(sContent);
fs.Write(b, 0, b.Length);
fs.Close();
}
catch { }
}
/// <summary>
/// 正确日志
/// </summary>
/// <param name="Message">正确内容面试题-螺旋矩阵 - SkyMine 阅读原文»
小弟不才,若有高手路过,请多指点,不胜荣幸!
话说,今日参加一家公司面试,要求实现如上如这种矩阵,初一看 ,就一矩阵,信誓旦旦的以为很简单呢,结果开始写代码的时候才发现这不是一般的矩阵,而是一只蜗牛呀,直接昏倒!老实说,小弟当时被这只蜗牛吓到了,然后果断放弃了,答了剩下的题。至于面试结果如何,且听有机会的时候分解!
面试受挫,但我不能停止前进的脚步,归来之后仔细研究了一下,发现了如下 规律:
如此图所示,最外层的规律便是红线所示的四组数组成的,哈 ,既然发现了规律 ,那么繁琐的工作就交给计算机来完成了,那么,我就先咽下第一口芥末喽:
Step1:实现红线1
首先,做些准备工作吧
线1的实现就很简单了,简单的一个循环
Step2:实现整个外围
后面的坐标变化,还是直接上图吧:
既然知道了坐标是怎么变化的,那么就通过一些列的循环赋值吧!
Step3:还你一颗真诚的心!
哈 ,原来内部也是有规律的 ,这个时候,是不是要递归一下呢?
没有评论:
发表评论