c# - 从控制台应用程序创建 Windows 服务

标签 c# windows-services console-application

是否可以从控制台应用程序创建 Windows 服务。 事实上,我制作了一个控制台应用程序,可以从数据库向人员发送电子邮件,但是当我尝试使用几乎相同的代码创建服务时,它不起作用。安装后,不再发送电子邮件。因此,如果有办法的话,我想将我的控制台应用程序转换为服务,因为我想自动发送它们并且我不想使用任务调度程序。

这是我的控制台应用程序主

     {
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress(ConfigurationManager.AppSettings["email"]);
        mail.Subject = "Rappel délai tâche";
        SmtpClient client = new SmtpClient(ConfigurationManager.AppSettings["domaine"]);
        client.EnableSsl = true;

        client.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["email"], ConfigurationManager.AppSettings["password"]); 

        BDGestionEntities bd = new BDGestionEntities();
        TimeSpan diff;
        DateTime aujourdhui = DateTime.Today;
        List <tache> taches = bd.taches.ToList();

        foreach (var k in taches)
        {
            Console.WriteLine(k.nom_tache);
            diff = k.date_fin.Subtract(aujourdhui);
            int datediff = Convert.ToInt32(diff.TotalDays);
            if (datediff <= 2)
            {



                mail.To.Add(k.utilisateur.email);

                mail.Body = "Bonjour, " + k.utilisateur.nom + " " + k.utilisateur.prenom +
                    "\n\nNous vous envoyons le présent mail pour vous rappeler que la tâche \"" + k.nom_tache + "\" qui vous est accordée touchera à sa fin d'ici deux jours.\nVeuillez respecter le délai. \n\n Bien cordialement.";
                try
                {
                    client.Send(mail);
                    Console.WriteLine("Email envoyé");
                }
                catch (Exception ex)
                {
                    Console.Write(ex.Message);
                }
            }
        }
    }

事实上,我正在使用带有 ado .net 的模型来访问我的数据库

最佳答案

我不会尝试直接转换它,而是先尝试编写一个非常简单的服务来了解它是如何工作的。也许有些简单的事情,比如每 5 分钟将日期和时间写入一个文件。然后,您可以尝试将代码添加到服务主体中。

显然,您会希望避免任何写入屏幕的内容。这应该写入日志或事件查看器。

关于c# - 从控制台应用程序创建 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967257/

相关文章:

c# - 我将如何着手实现不同速度的秒表?

c++ - QCoreApplication 事件循环和 Windows 服务控制处理函数

.net - 系统错误 5 启动 .NET 服务时访问被拒绝

c# - 求总和并添加概率标度

c# - 在控制台应用程序中包装 C# 服务以对其进行调试

c# - 控制台应用程序 - 当前工作线上方的 WriteLine

c# - 重试取消消息框

c# - 通过在文本框中输入进行过滤

c# - 具有返回类型的方法的线程池

azure - 工作线程服务中的事件日志未发布到 Azure Application Insight