Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#的任务调度器(用于调度.bat(批处理)文件)_C#_.net_Scheduled Tasks - Fatal编程技术网

使用C#的任务调度器(用于调度.bat(批处理)文件)

使用C#的任务调度器(用于调度.bat(批处理)文件),c#,.net,scheduled-tasks,C#,.net,Scheduled Tasks,我想使用C#创建一个与Windows任务调度器相同的任务调度器,以便在特定时间运行我的.bat(批处理)文件 我发现了这个有用的链接() 在这里,他们计划触发器,我想计划.bat文件 我的意思是,当我试图在标记文本框中给出批处理文件路径时,它只是触发了触发器,而不是运行批处理文件 所以,我稍微修改了代码,现在我也可以运行批处理文件了 但是,当我关闭应用程序时,触发也会停止, 那么,即使我关闭我的应用程序(如Windows任务调度器),是否有任何方法可以触发或运行我的批处理文件 请帮帮我 注意:它

我想使用C#创建一个与Windows任务调度器相同的任务调度器,以便在特定时间运行我的.bat(批处理)文件

我发现了这个有用的链接()

在这里,他们计划触发器,我想计划.bat文件 我的意思是,当我试图在标记文本框中给出批处理文件路径时,它只是触发了触发器,而不是运行批处理文件 所以,我稍微修改了代码,现在我也可以运行批处理文件了

但是,当我关闭应用程序时,触发也会停止, 那么,即使我关闭我的应用程序(如Windows任务调度器),是否有任何方法可以触发或运行我的批处理文件

请帮帮我


注意:它的桌面应用程序使用C#

那么,问题出在哪里?下载后,您可以查看
Demo.cs
,在那里可以找到方法
private void createScheduleItem()
和事件
triggerItem\u OnTrigger
。您可以更改此事件以运行所需的批处理文件。

您可以将批处理文件的路径放置在标记文本框中。选中仅在一次中激活的框,设置时间,此时触发

注意:它只是触发了fire。您要做的是运行批处理文件。在这种情况下,您需要修改代码。你可以从

private void buttonCreateTrigger_Click(object sender, EventArgs e)
    {
        CreateSchedulerItem();
    }
在Demo.cs页面中

要在TaskScheduler.cs中运行批处理文件或exe,请查找并替换此代码

        void _triggerTimer_Tick(object sender, EventArgs e)
    {
        _triggerTimer.Stop();
        foreach (TriggerItem item in TriggerItems)
            if (item.Enabled)
                while (item.TriggerTime <= DateTime.Now)
                    item.RunCheck(DateTime.Now);
                    System.Diagnostics.Process.Start("Your Path");
        _triggerTimer.Start();
    }
void\u triggerTimer\u勾选(对象发送方,事件参数e)
{
_triggerTimer.Stop();
foreach(TriggerItems中的TriggerItem项目)
如果(项已启用)

while(item.TriggerTime类似于此。我希望您可以在
System.Diagnostics
上更改
Console.WriteLine

static void Main(string[] args) {
    AutoResetEvent autoResetEvent = new AutoResetEvent(false);
    Timer timer = new Timer(PrintHello, autoResetEvent, 0, 5000);
    autoResetEvent.WaitOne();
}

private static void PrintHello(Object state) {
    Console.WriteLine("Hello");
}

你的问题不清楚,但你能不能把它作为一个参数传递给main?你有什么理由不能只使用windows任务调度程序吗?@Reubz这个应用程序我们是为非技术人员的员工设计的,所以我们必须创建一个桌面表单,通过它我们可以调度批处理文件,这个批处理文件将调用其他c在OLE应用程序上。@doctor如果可能的话,请单击我在问题中提到的链接,下载该项目并运行它。在这个项目中,设计是完美的,但我不知道如何在这个项目中给出批处理文件的路径,所以它将在计划时运行。当我在标记te中给出批处理文件的路径时,请尝试在codeprojectya上发布您的问题xtbox只是触发了触发器,没有运行我的批处理文件。因此,我正在寻找代码,如何运行我的批处理文件,我尝试在私有void CreateSchedulerItem()和事件触发器Item_OnTrigger中进行一些修改,但我没有得到solution@VARUNNAYAK检查我的答案…如果有帮助,请将其标记为答案:)嘿,谢谢你的代码,我只是稍微修改一下,
if(item.Enabled)而(item.TriggerTime你能告诉我应该应用什么类型的修改吗???我改变了编码,所以现在我可以根据调度运行批处理文件,但当我终止程序时,它无法调度,所以,有没有办法运行批处理文件,即使我终止我的应用程序,比如刚才复制并通过的窗口任务调度你亲自尝试了什么?顺便说一句,要解决你的问题,你不需要这么复杂的程序。你可以用10行代码来解决它。看看后面。