Поток был прерван ошибка при использовании process.waitforexit () - PullRequest
1 голос
/ 08 января 2010

У меня есть код ниже, который вызывается из цикла while, поэтому он выполняется несколько раз подряд. Иногда, но не всегда, я получаю сообщение об ошибке прерывания потока в p.WaitforExit (). У кого-нибудь есть понимание этого? я должен вызывать p.Close () после p.WaitForExit?

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;
Thread was being aborted.
mscorlib
 at System.Threading.WaitHandle.WaitOneNative(SafeWaitHandle waitHandle, UInt32 millisecondsTimeout, Boolean hasThreadAffinity, Boolean exitContext)
 at System.Threading.WaitHandle.WaitOne(Int64 timeout, Boolean exitContext)
 at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
 at System.Diagnostics.Process.WaitForExit()

1 Ответ

3 голосов
/ 08 января 2010

Если вы вызываете его со страницы ASP.NET, исключение, которое вы видите, скорее всего, является результатом того, что вы превысили время ожидания выполнения для запроса на страницу, и оно прерывается. Ошибка находится в строке p.WaitforExit (), потому что именно там находилась ваша страница ASP.NET, пока она ожидала процесса, который вы начали возвращать. Вы можете изменить время ожидания по умолчанию (110 секунд в 2.0) в файле веб-конфигурации для вашего приложения ASP.NET.

<httpRuntime  executionTimeout = "600" >

или с помощью кода на странице только для этой страницы:

  HttpContext.Current.Server.ScriptTimeout

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...