【问题标题】:The windows service does not do the OnStart function when the PC turns on电脑开机时windows服务不做OnStart功能
【发布时间】:2021-06-22 06:59:03
【问题描述】:

我一直在编写一个 Windows 服务,当 PC 开启和关闭时,它会在数据库中插入 SQL Server。

当我手动启动服务并手动关闭它时,它会执行插入操作,但在打开和关闭 PC 时它不起作用。我是不是做错了什么?

我使用 Windows 服务 (.NET) 项目在 Visual Studio Code 中编写代码。

谢谢

我留下了部分代码(OnStart、OnShutdown),这样你就可以看到我做了什么:

// OnStart
protected override void OnStart(string[] args)
{
    try
    {
        InsertaObrir();
    }
    catch (Exception)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Error Start: " + "\n");
        File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
        sb.Clear();
     }
}

// OnShutdown
protected override void OnShutdown()
{
    try
    {
        InsertaSortir();
    }
    catch (Exception)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Error Sortir: " + "\n");
        File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
        sb.Clear();
    }
}

// IntentaObrir 
private void InsertaObrir()
{
    StringBuilder sb = new StringBuilder();
    sb.Append("Inicia: " + DateTime.Now + "\n");
    File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
    sb.Clear();

    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder.DataSource = Properties.Settings.Default.IP;
    builder.UserID = Properties.Settings.Default.UserID;
    builder.Password = Properties.Settings.Default.Password;
    builder.InitialCatalog = Properties.Settings.Default.BaseDeDades;

    int num = CreateCommand(builder.ConnectionString, true); 
    // This line works so it's not the problem

    sb.Append("Inserta -> " + num + "\n");
    File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
    sb.Clear();
}

// IntentaSortir
private void InsertaSortir()
{
    StringBuilder sb = new StringBuilder();
    sb.Append("Apaga: " + DateTime.Now + "\n");
    File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
    sb.Clear();

    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder.DataSource = Properties.Settings.Default.IP;
    builder.UserID = Properties.Settings.Default.UserID;
    builder.Password = Properties.Settings.Default.Password;
    builder.InitialCatalog = Properties.Settings.Default.BaseDeDades;

    int num = CreateCommand(builder.ConnectionString, false);

    // This line works so it's not the problem
    sb.Append("Inserta -> " + num + "\n");
    File.AppendAllText(Properties.Settings.Default.RutaArxiuLog, sb.ToString());
    sb.Clear();
}

【问题讨论】:

标签: c# sql-server windows-services


【解决方案1】:

我发现 Windows 10 具有快速启动功能,不会触发 OnStart(以及 OnShutdown)。

我会留下找到它的帖子,以及解释如何禁用此功能的网站。

谢谢

https://stackoverflow.com/a/61307074/16282403

https://help.uaudio.com/hc/en-us/articles/213195423-How-To-Disable-Fast-Startup-in-Windows-10

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 2020-04-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多