button1_Click Windows表单c#创建调度程序任务

时间:2014-12-05 15:48:01

标签: c# windows-forms-designer buttonclick

我在c#Visual Studio 2012中有一个Windows窗体应用程序,上面有一个button_click。我试图做的是跟随。 应用程序工作正常,每当我点击我的按钮时,应用程序就会执行我想要做的事情。我需要在每天的基础上做这个问题,我不会在那里手动点击我自己的按钮。有一种方法可以自动安排日程表自动启动按钮吗?所以我会一直打开应用程序,所以每天都会按下按钮。

提前多多感谢。

3 个答案:

答案 0 :(得分:-1)

您需要做的是将事件处理程序代码集中到类库中。然后您的事件处理程序可以调用该集中式方法。完成后,您可以创建一个控制台应用程序或Windows服务,如上面建议的L-Three。

// Event handler
private void button1_Click(object sender, EventArgs args)
{
      LibraryClass.DoStuff(...); // Pass whatever parameters might be needed
}

// In a separate project
public class LibraryClass
{
      public static void DoStuff(...)
      {
            // Move the code from your event handler here
      }
}

// In a console app
class Program
{
      static void Main(string [] args)
      {
            LibraryClass.DoStuff(...);  // pass whatever parameters are needed
      }
}

答案 1 :(得分:-2)

使用间隔为1000的计时器并检查当前日期是否已更改。然后单击"按钮"。

答案 2 :(得分:-2)

你好Benjamin Arancibia,你可以这样做:

在App.config中添加变量以在任务发生时保存控件。

<appSettings>    
    <add key="executeDailyService" value="true"/>
    <add key="dailyServiceTime" value="08:00-18:00"/>
    <add key="dailyServiceInterval" value="1"/>
</appSettings>

executeDailyService =选项,指示任务是否每天都会发生 dailyServiceTime =用于指定它可以在此处发生的时间段的选项可以自定义例如:13:00-14:00 dailyServiceInterval =用于通知任务将发生的天数的选项,例如: 1 =每天,2 =每隔一天... n

启动应用程序时,请启动以下方法:

private void startTimer()
{
    // Loads the variables that will be used
    var executeDailyService = ConfigurationManager.AppSettings["executeDailyService"];
    var dailyServiceTime = ConfigurationManager.AppSettings["dailyServiceTime"];
    var dailyServiceInterval = ConfigurationManager.AppSettings["dailyServiceInterval"];
    // Validates that the variables are loaded
    if (executeDailyService != "true" || String.IsNullOrEmpty(dailyServiceTime) || String.IsNullOrEmpty(dailyServiceInterval))
        return;

    // Timer that controls the automatic execution of code
    var timer = new Timer();
    timer.Interval = Convert.ToInt32(dailyServiceInterval) * 60 * 1000; // Calculates how often will run your code
    timer.Elapsed += new ElapsedEventHandler(services);
    timer.Start();
}

private void services(object sender, ElapsedEventArgs e)
{
    // Loads of the variable time period
    var dailyServiceTime = ConfigurationManager.AppSettings["dailyServiceTime"];
    // Validates the contents of the variable is in the correct format
    if (String.IsNullOrEmpty(dailyServiceTime) || !dailyServiceTime.IsMatch("^\\d{2}:\\d{2}-\\d{2}:\\d{2}$"))
        return;

    // Calculates whether the current time is within the range you set
    var now = Util.Now();
    var dateBegin = Util.DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(dailyServiceTime.Substring(0, 2)), Convert.ToInt32(dailyServiceTime.Substring(3, 2)), 0);
    var dateEnd = Util.DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(dailyServiceTime.Substring(6, 2)), Convert.ToInt32(dailyServiceTime.Substring(9, 2)), 0);
    if (dateBegin > dateEnd || now < dateBegin || now > dateEnd)
        return;

    var timer = sender as Timer;
    timer.Stop();

    // You code here

    timer.Start();
}