启动一个不在我的Windows服务中工作的进程

时间:2010-11-23 10:14:45

标签: c# windows-services process

我正在尝试使用进程通过c#.net执行exe文件。它无法执行返回以下异常:

  

System.InvalidOperationException:没有进程与此对象关联。      在System.Diagnostics.Process.EnsureState(状态)      在System.Diagnostics.Process.EnsureState(状态)      在System.Diagnostics.Process.GetProcessHandle(Int32访问,布尔throwIfExited)      在System.Diagnostics.Process.WaitForExit(Int32毫秒)      在System.Diagnostics.Process.WaitForExit()      在VideoHandlingWinService.VideoHandlingService.ConvertVideoToFlv(String SavePath,String WithOutExt,String InputFile,String spath,Int32 VideoQueueId)      在VideoHandlingWinService.VideoHandlingService.VideoHandling(String VideoName,String SavePath,String InputFile,String WithOutExt,String spath,Int32 VideoQueueId,String VideoDescription,Int32 RegisteredUserId,Int32 CategoryId,String VideoTitle)      在VideoHandlingWinService.VideoHandlingService.StartHandlingVideo()      在VideoHandlingWinService.VideoHandlingService.OnStart(String [] args)

我启动该流程的代码如下:

Process proc = new Process();
string spath = AppDomain.CurrentDomain.BaseDirectory.ToString();

try
{
    proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
    proc.StartInfo.Arguments = FilArgs;
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;

    proc.Start();

    string StdOutVideo = proc.StandardOutput.ReadToEnd();
    string StdErrVideo = proc.StandardError.ReadToEnd();             
}
catch { }
finally
{
    proc.WaitForExit();
    proc.Close();
}

任何人请告诉我如何在Windows服务中执行此操作。此外,我以本地帐户运行Windows服务,并希望exe没有权限问题。

2 个答案:

答案 0 :(得分:1)

无论如何使用System.IO.Path.Combine(path, "ffmpeg\\ffmpeg.exe")

答案 1 :(得分:0)

我认为错误发生在

proc.WaitForExit();

你确定ffmpeg没有被执行吗?

根据MSDN

  

WaitForExit()()()重载是   用于制作当前线程   等到相关的过程   终止。这个方法指示   处理组件等待无限   这个过程的时间和   事件处理程序退出。

我估计你在finally时已经退出了ffmpeg。