Windows服务自动停止

问题描述:

我想从Windows服务调用存储过程,之后我想自己停止服务。以下是我有:Windows服务自动停止

public DailyChecker() 
{ 
    InitializeComponent(); 
} 

protected override void OnStart(string[] args) 
{ 
    SqlConnection connection = new SqlConnection(connectionString); 

    try 
    { 
     connection.Open(); 
     SqlCommand cmd = new SqlCommand("sp_ChangeState", connection); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.ExecuteNonQuery(); 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 

protected override void OnStop() 
{ 
    base.OnStop(); 
} 

我遇到的问题是,当我启动服务,它在例如自动停止,并显示一个消息框。

+3

除了我不知道为什么你需要一个Windows服务在这种情况下,我真的不明白为什么服务应该停止 - 但我猜服务运行的帐户有一些访问权限你的数据库有问题......你有没有试过在windows-eventlog中查看,以及这个messagebox告诉你什么? – Carsten 2012-03-30 07:30:24

+0

你是对的有一个访问问题。我会处理的。 Thanx – Darshana 2012-03-30 07:38:37

+0

我已将serviceProcessInstaller的属性Account更改为LocalSystem。现在它正在工作 – Darshana 2012-03-30 08:11:49

我有serviceProcessInstaller的财产帐户更改为本地系统的情况。现在它的工作

不知道我完全理解你的appraoch,但这应该仅仅是调用base.OnStop

try 
{ 
    connection.Open(); 
    SqlCommand cmd = new SqlCommand("sp_ChangeState", connection); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.ExecuteNonQuery(); 
} 
finally 
{ 
    connection.Close(); 
} 
base.OnStop(); 
+1

尝试追踪错误后尝试添加catch块。可能是因为您的SP呼叫失败并导致服务崩溃 – 2012-03-30 07:39:19

+0

我已将serviceProcessInstaller的属性Account更改为LocalSystem。现在它正在工作 – Darshana 2012-03-30 08:12:07