c# - 使用process.waitforexit()时线程被中止错误

标签 c# asp.net multithreading process

我下面的代码从while循环中被调用,因此它连续执行多次。有时但并非总是如此,我最终在p.WaitforExit()上遇到线程被中止的错误。有人对此有见识吗?我应该在p.WaitForExit之后调用p.Close()吗?

string outputFileName = Path.Combine(Path.GetDirectoryName(recordingFileName), Guid.NewGuid() + ".mpg");
        ProcessStartInfo startInfo = new ProcessStartInfo(ffmpegfileName);
        startInfo.Arguments = "-i \"" + recordingFileName + "\" -r 30 -sameq \"" + outputFileName + "\"";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        Process p = Process.Start(startInfo);
        p.WaitForExit();
        if (p.ExitCode != 0)
        {
            throw new Exception("exited with an exit code of " + p.ExitCode.ToString(CultureInfo.InvariantCulture) + ".");
        }
        return outputFileName;

威胁已经被清除了。
mscorlib
在System.Threading.WaitHandle.WaitOneNative(SafeWaitHandle waitHandle,UInt32毫秒超时, bool hasThreadAffinity, bool exitContext)
在System.Threading.WaitHandle.WaitOne处(Int64超时, bool 值exitContext)
在System.Diagnostics.Process.WaitForExit(Int32毫秒)
在System.Diagnostics.Process.WaitForExit()

最佳答案

如果从ASP.NET页面调用它,则所看到的异常很可能是由于您击中了页面请求上的执行超时而被中止的。该错误在p.WaitforExit()行上,因为这是ASP.NET页在等待开始返回的进程时所处的位置。您可以在ASP.NET应用程序的Web配置文件中更改默认执行超时(2.0中为110秒)。

<httpRuntime  executionTimeout = "600" >

或仅通过该页面中页面中的代码进行操作:
  HttpContext.Current.Server.ScriptTimeout

http://msdn.microsoft.com/en-us/library/e1f13641.aspx

关于c# - 使用process.waitforexit()时线程被中止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2028241/

相关文章:

C# Web 浏览器控件删除空格

c# - 将 VlcManager 与最新版本的 Vlc.DotNet 一起使用

PHP MYSQL - 显示多线程评论不起作用

Java在线程中更改字符串值

c# - 如何解析像 "-2.000000e+000"这样的数字

c# - 我应该从哪里开始制作基于.NET 框架的RESTful Web 服务?

ASP.Net MVC Controller UpdateModel 未更新

jquery - 从 jQuery 调用将参数传递给 Http Handler

c# - Visual Studio 2008 : Step to next line is very slow when debugging managed code

c++ - 如何使用构造函数(带参数)创建模板类并将该类的方法传递给线程