I’m writing a scheduler or sorts. It’s basically a table with a list of exes (like ‘C:\a.exe’) and a console app that looks at the records in the table every minute or so and runs the tasks that haven’t been run yet.
I run the tasks like this:
System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = someExe; // like 'a.exe' p.Start();
How can I tell if a particular task failed? For example what if a.exe throws an unhandled exception? I’d like the above code to know when this happens and update the tasks table with something like ‘the particular task failed’ etc.
How can I do this?
I’m not using the Sql Agent or the Windows Scheduler because someone else told me not to. He has more ‘experience’ so I’m basically just following orders. Feel free to suggest alternatives.
You can catch the Win32Exception to check if Process.Start() failed due to the file not existing or execute access is denied.
But you can not catch exceptions thrown by the processes that you create using this class. In the first place, the application might not be written in .NET so there might not be a concept of exception at all.
What you can do is check on the ExitCode of the application or read the StandardOutput and StandardError streams to check whether error messages are being posted.