在Windows窗体中从C#方法创建一个exe文件

时间:2014-05-09 10:33:35

标签: c# scheduled-tasks exe

我有一个发送电子邮件的Windows表单应用程序。每封电子邮件都有一个发送时间(dateTime)。

我想在Windows中创建一个计划任务,每天在我的数据库上运行查询并获取 那天应该发送的电子邮件。

我想从执行此作业的函数创建.exe文件,然后将调度程序设置为每天运行该.exe文件。

我该怎么做?

这是在预定时间内完成工作的正确方法吗?

2 个答案:

答案 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");
    }
}