.NET自动服务程序—C#(二)

原创 2004年01月09日 09:55:00

.NET自动服务程序—C#(二)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

追风(VisualSW)

启动服务:

定义两个变量:

private string[,] arrConf;保存配置信息

private Assembly[] assObj;加载组件

 

OnStart事件中添加如下代码:

protected override void OnStart(string[] args)

{                     

WriteLog("/************************************************************/");

        WriteLog("ScheculerServer Start at "+DateTime.Now.ToString());

        //Load Configuation

        if(!ReadConf())return;

 

        //Load Assembly

        try

        {

                assObj=new Assembly[arrConf.GetLength(1)];

                for(int i=0;i<assObj.Length;i++)

                {

                        assObj[i]=Assembly.LoadFrom(arrConf[0,i].ToString());

                        arrConf[0,i]="NotRuning";

                }

        }

        catch(Exception e)

        {

                WriteLog(DateTime.Now.ToString());

                WriteLog("Load Dll Error:");

                WriteLog(e.ToString());

        }

 

        //Start Time

        SchedulerTimer.Interval=30000;//设置每30秒触发

        SchedulerTimer.Enabled=true;//启动定时器

}

 

定时器触发:

此处完成检查时间是否运行

private void SchedulerTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

{

        try

        {

                //SchedulerTimer.Enabled=false;

                DateTime dtNow=DateTime.Now;

                DateTime dtRun;

                for(int i=0;i<arrConf.GetLength(1);i++)

                {

                        dtRun=Convert.ToDateTime(arrConf[1,i].ToString());

                        if(dtRun.AddSeconds(-30)<=dtNow && dtNow<=dtRun.AddSeconds(30))                                        {

                                if(arrConf[0,i].ToString().Trim()=="NotRuning")

                                {

                                        foreach(Type t in assObj[i].GetTypes())

                                        {

                                                if(t.IsClass && !t.IsAbstract && t.IsPublic)

                                        {

                                                        Object obj=Activator.CreateInstance(t);                        

                                                        MethodInfo mi=t.GetMethod("Run");

                                                        if(mi!=null)

                                                        {

                                                                mi.Invoke(obj,null);

                                                                obj=null;

                                                                GC.Collect();

                                                                break;

                                                        }

                                                        obj=null;

                                                        GC.Collect();                                                     

                                                }

                                        }

                                        arrConf[0,i]="OnRuning";                                             

                WriteLog("-------------------------------------------------------------");

                WriteLog(DateTime.Now.ToString()+":Runing "+arrConf[1,i]+" "+assObj[i].Location.ToString());

                WriteLog("-------------------------------------------------------------");                                                      

                        }

                       

                }

        catch(Exception ex)

        {

                                WriteLog("##########################################################");

        WriteLog(ex.ToString());

                                WriteLog("##########################################################");

        }

}

 

这时程序的主骨架就完成了,下一步需要制作Windows服务安装程序,切换到设计页面,在属性的右下脚有Add Installer字样,单击,VS.NET自动帮你生成安装程序。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-1-82014011.png

打开ProjectInstaller.cs文件,可以看到两个组件,设置其属性。

CSDN_Dev_Image_2004-1-82014013.png

运行帐号选择LocalSystem,系统以本地系统帐号运行。

CSDN_Dev_Image_2004-1-82014015.png

启动类型选择自动。

编译为exe,打开VS.NET cmd,进入exe目录,运行InstallUtil.exe SchedulerServer.exe安装服务,成功之后,打开服务管理可以看到刚才的服务,启动服务即可。

CSDN_Dev_Image_2004-1-82014017.png

服务日志保存在系统目录下的SchedulerServer.txt

/************************************************************/

ScheculerServer Start at 12/24/2003 3:46:21 PM

-------------------------------------------------------------

12/24/2003 3:46:51 PM:Runing 15:47 e:/work/geid/src/geidautocheck/bin/debug/geidautocheck.dll

-------------------------------------------------------------

ScheculerServer Stop at 12/24/2003 3:48:55 PM

/************************************************************/

 

自动运行程序:

1.NET组件(dll)

2.入口为

public void Run()

{}

 

.NET自动服务程序—C#

应用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Wi...
  • szg3827
  • szg3827
  • 2008年06月18日 18:29
  • 376

.NET自动服务程序—C#

程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Wind...
  • jxufewbt
  • jxufewbt
  • 2007年05月30日 17:38
  • 1009

.NET自动服务程序—C#(一)

.NET自动服务程序—C#(一) 追风(VisualSW) 应用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库...
  • VisualSW
  • VisualSW
  • 2004年01月09日 09:55
  • 2057

.net自动服务程序—C#(一)

应用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Wi...
  • zhanhaibin
  • zhanhaibin
  • 2007年12月20日 17:23
  • 361

用托盘控制windows服务的c#实现 (转)

用托盘控制windows服务的c#实现 (转)   using System; namespace UBISerialsController...{ /**////  /// Class1 的摘要说明...
  • xkwang
  • xkwang
  • 2007年05月08日 10:55
  • 227

c# .Net 微信扫码支付模式二 开发时遇到的“签名错误”问题

微信扫码支付模式二 开发时遇到的“签名错误”问题
  • dreamiii
  • dreamiii
  • 2017年09月08日 20:34
  • 405

【.NET】继承,组合,聚合详解

类间关系   在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之...
  • smartmz
  • smartmz
  • 2012年01月03日 23:24
  • 1375

深入.NET和C#第二章上机3

namespace 上机3   {       public partial class frmshow : Form       {           public se[] engine...
  • qq_36074157
  • qq_36074157
  • 2017年02月10日 19:24
  • 352

C# windows服务:C#windows服务中的Timer控件的使用

C# windows服务程序中的Timer控件的使用问题是如何解决的呢? 今天研究了下C# windows服务程序中的Timer控件的使用的写法. 我们在建立一个C# windows服务程...
  • u013938578
  • u013938578
  • 2017年12月06日 08:44
  • 59

C# windows服务打开网页或者应用程序

首先能够打开一个网页或者程序,有以下几种方式 1.使用ie打开网页 System.Diagnostics.Process.Start("iexplore.exe", "http://blog.csdn...
  • wuma0q1an
  • wuma0q1an
  • 2016年06月07日 11:10
  • 465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET自动服务程序—C#(二)
举报原因:
原因补充:

(最多只允许输入30个字)