我正在尝试使用进程通过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没有权限问题。
答案 0 :(得分:1)
无论如何使用System.IO.Path.Combine(path, "ffmpeg\\ffmpeg.exe")
答案 1 :(得分:0)
我认为错误发生在
proc.WaitForExit();
你确定ffmpeg没有被执行吗?
根据MSDN
WaitForExit()()()重载是 用于制作当前线程 等到相关的过程 终止。这个方法指示 处理组件等待无限 这个过程的时间和 事件处理程序退出。
我估计你在finally
时已经退出了ffmpeg。