[英].NET processes in Task Scheduler
我有一個程序可以執行另一個程序,該程序完成后主程序會繼續執行。
Process p = Process.Start("program2.exe");
while (!p.HasExited)
Thread.Sleep(10000);
if (p.HasExited)
{
// Execute more code
}
當我運行程序時,它的效果很好。 但是在Windows中用作計划任務時不起作用。 這部分永遠不會執行
if (p.HasExited)
{
// Execute more code
}
似乎找不到一種調試方法。 我已經在這個程序上停留了一個星期。
如果您假設p.HasExited一旦成立,它將保持這種狀態,那么您的代碼會更簡單。 然后,您可以刪除if語句。 然后,只有三種剩余的方式可以看到您的代碼可以提供您看到的結果:
您可以先調查並消除1和2嗎? 首先考慮簡單的選擇是一個好主意。
更新:從評論中,安德魯·基思(Andrew Keith)還建議可能根本不執行該代碼。 隨意插入日志語句,以便您可以確切地了解發生了什么。 例如登錄到文件。
我的猜測是與計划任務運行時的用戶有關的安全性問題。 即:該程序可以像您一樣正常運行,但是作為計划任務的用戶,它不允許執行“ program.exe”(更糟糕的是,您要編程)。
您可以檢查任務計划程序日志(在任務計划程序控制面板->高級菜單中)。 它應該為您的任務提供一個退出代碼,為零(或可能為一)。 如果您獲得非常大的退出代碼,那是不對的。
哦,Process.WaitForExit()可能比輪詢循環更干凈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.