预定进程返回0x41031代码

时间:2016-01-20 11:58:08

标签: c# batch-file scheduled-tasks webclient

---更新---

经过一些小提琴我确认手动调用.Bat文件后,使用调度程序运行它并不起作用,但使用调度程序运行CallUrl.exe程序可以正常工作!所以问题出现在.Bat的Start命令中?是否存在在此设置上调用外部程序的特定方法?我也提升了任务的特权。

---原始信息---

我在服务器上编写了一个必须运行批处理文件然后调用程序的任务。 该程序只是调用作为参数传递的weburl。 它可以工作,但是任务表明进程仍在运行,这会阻止任务在下次正确运行。

这是从任务中调用的.Bat

//Do stuff and then
Start "" "CallUrl.exe" "http://www.UrlPassedAsArgument"

CallUrl是一个简单的控制台程序,它调用一个url,然后必须自动关闭

    static void Main(string[] args)
    {
        string url = args[0];

        try
        {
            Console.WriteLine("Running " + url);
            Console.WriteLine("Wait");

            using (var client = new NoKeepAlivesWebClient())
            {
                string value = client.DownloadString(url);
                Console.WriteLine("[Complete]");
            }

            Environment.Exit(0);
            return;
        }
        catch(Exception ex)
        {
            Console.WriteLine("[Error]");
            Console.WriteLine(ex);
            Console.ReadLine();
        }
    }

理论上,这必须强制关闭过程

Environment.Exit(0);
return;

这是调用url并关闭连接的NoKeepAlivesWebClient()类

public class NoKeepAlivesWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            ((HttpWebRequest)request).KeepAlive = false;
        }

        return request;
    }
}

如果我手动调用.Bat文件,它可以完美地运行,然后关闭控制台窗口,但当它由任务schedueler自动执行时,它会在任务管理器中保留"控制台窗口主机&#34 ;和" Windows命令处理器"过程

任务以" 0x41031"结束。代码。

目前,我已对任务计划程序进行了编程,以便在给定时间后结束处理,但最小值为30分钟,需要更频繁地处理。

0 个答案:

没有答案