我有一个发送电子邮件的Windows表单应用程序。每封电子邮件都有一个发送时间(dateTime
)。
我想在Windows中创建一个计划任务,每天在我的数据库上运行查询并获取 那天应该发送的电子邮件。
我想从执行此作业的函数创建.exe
文件,然后将调度程序设置为每天运行该.exe
文件。
我该怎么做?
这是在预定时间内完成工作的正确方法吗?
答案 0 :(得分:0)
创建一个控制台应用。这构建为一个简单的.exe文件。然后在Windows计划程序中安排控制台应用程序。
如果你想分享"邮件"逻辑,您可以将它放在.dll中并在两个项目中使用.dll。
答案 1 :(得分:0)
我写了一个做同样事情的应用程序。这是Windows窗体应用程序,可以以交互方式使用,但也可以按计划任务运行。
这是我的Program.cs
static class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
autoStart = false;
}
else if (args[0]=="AUTO")
{
autoStart=true;
}
Application.Run(new frmMain());
}
public static bool autoStart;
}
要以交互模式运行程序,双击其exe文件执行程序。
如果要从计划任务中调用它,请在调用程序时提供参数AUTO。
当按计划任务运行时,不应该进行任何输入/输出操作,即严格禁止MessageBox.Show或类似操作。
加载表单的事件处理程序
private void frmMain_Load(object sender, EventArgs e)
{
// initialization of fields in frmMain
.
.
if (Program.autoStart)
{
MailSend();
Application.Exit();
}
}
交互式工作的事件处理程序
private void btnMailSend_Click(object sender, EventArgs e)
{
MailSend();
}
发送邮件的功能
private void MailSend()
{
// code to prepare and send mail
//
.
.
if (!Program.autoStart)
{
MessageBox.Show("Mail sent to receipents");
}
}