making a process asynchronous?
am 02.04.2008 07:35:30 von bryan rasmussenHi,
I have a service that is starting a process, I'm tracking what each of
them is doing by writing to the eventlog. it seems that the process is
waiting for my service to be finished with what it' does, because it
does not write to the eventlog until all of the service eventlog
events have been written, even though the process has its event log
writing take place at the beginning of the process starting, and the
service still has about 20 event log entries it should write when it
starts the process, the bit of code starting the process are:
processtime=25000;
pid = processtarter(Unexpandedcommand,
specificformatprocess,processtime);
public static int processtarter(string pArgs, string pName,
int processtime) {
Process nProcess = new Process();
nProcess.StartInfo.WindowStyle =
ProcessWindowStyle.Normal;
nProcess.StartInfo.CreateNoWindow = false;
nProcess.StartInfo.UseShellExecute = false;
nProcess.StartInfo.Arguments = pArgs;
nProcess.StartInfo.FileName = pName;
nProcess.Start();
do
{
try
{
if (!nProcess.HasExited)
{
nProcess.WaitForExit(3000);
}
}
catch(Exception a){}
} while (nProcess.TotalProcessorTime.Ticks <
processtime);
return nProcess.Id;
}
I have also tried to make the current thread sleep while the nProcess
has not exited but that doesn't seem to help.
The process is being called correctly, and passed the correct
arguments but the service isn't waiting for the process to finish.