C# 写的windows服务 自动停止。

2024-12-23 04:01:06
推荐回答(4个)
回答1:

public class logService : System.ServiceProcess.ServiceBase
{
public System.Diagnostics.EventLog evLog;
///


/// 必需的设计器变量。
///

private System.ComponentModel.Container components = null;

public logService()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();

// TODO: 在 InitComponent 调用后添加任何初始化
//如果不存在日志************************************
if(!System.Diagnostics.EventLog.SourceExists("logService"))
{
EventLog.CreateEventSource("pingService","pingServiceLog");
}
this.evLog.Source="pingService";
//this.evLog.Log="pingServiceLog";
//**************************************************
}

// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;

// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new logService() };

System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}

///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///

private void InitializeComponent()
{
this.evLog = new System.Diagnostics.EventLog();
((System.ComponentModel.ISupportInitialize)(this.evLog)).BeginInit();
//
// evLog
//
this.evLog.Log = "Application";
//
// logService
//
this.CanHandlePowerEvent = true;
this.CanPauseAndContinue = true;
this.CanShutdown = true;
this.ServiceName = "pingService";
((System.ComponentModel.ISupportInitialize)(this.evLog)).EndInit();

}

///
/// 清理所有正在使用的资源。
///

protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

///
/// 设置具体的操作,以便服务可以执行它的工作。
///

protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。

this.evLog.WriteEntry("logService is Starting……………………………");
}

///
/// 停止此服务。
///

protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.evLog.WriteEntry("logService is Stopping……………………………");
}
///
/// 暂停
///

protected override void OnPause()
{
this.evLog.WriteEntry("logService is Pausing……………………………");
}
///
///继续
///

protected override void OnContinue()
{
this.evLog.WriteEntry("logService is Continuing……………………………");
}
}

回答2:

很明显你写的程序出现异常了,出现异常的时候系统服务就会起不来,这种异常种类很多,包括连不上数据库,打不开文件,创建文件失败等等,你可以在系统日志中查看到具体原因。建议做法,先不做成服务,用一个窗口来显示各步骤信息,确保没有错之后再转成服务,这样便于调试。

回答3:

你的程序有问题。例如有一些文件在创建INSTALL安装文件的时候没有导入进来。或者程序不完整。建立重新查看你的程序与程序文件。

回答4:

这证明你的程序有异常无法启动,你需要找到异常原因并调试。可以在关键代码上加上try……catch代码查看异常内容。服务程序不好调试,你可以先把Windows服务做成类库文件,用一个Windows窗体程序来引用并调试。或者你在catch代码中把异常内容写进某个文本文件,方便你查看。这就是程序设计时的日志管理、