C # Process <instance>.StandardOutput InvalidOperationException "Невозможно смешать синхронную и асинхронную операцию в потоке процесса." - PullRequest
2 голосов
/ 21 апреля 2010

Я пробовал это

        myProcess = new Process();

        myProcess.StartInfo.CreateNoWindow = true;
        myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

        myProcess.StartInfo.FileName = "Hello.exe";

        myProcess.StartInfo.Arguments ="-say Hello";
        myProcess.StartInfo.UseShellExecute = false;  

        myProcess.OutputDataReceived += new DataReceivedEventHandler(myProcess_OutputDataReceived);
        myProcess.ErrorDataReceived += new DataReceivedEventHandler(myProcess_OutputDataReceived);
        myProcess.Exited += new EventHandler(myProcess_Exited);
        myProcess.EnableRaisingEvents = true;

        myProcess.StartInfo.RedirectStandardOutput = true;
        myProcess.StartInfo.RedirectStandardError = true;
        myProcess.StartInfo.ErrorDialog = true;
        myProcess.StartInfo.WorkingDirectory = "D:\\Program Files\\Hello";

        myProcess.Start();

        myProcess.BeginOutputReadLine();
        myProcess.BeginErrorReadLine();

Тогда я получаю эту ошибку .. альтернативный текст http://img188.imageshack.us/img188/3759/errorstack.jpg

Мой процесс занимает очень много времени, поэтому мне нужно показать прогресс во время выполнения.

1 Ответ

3 голосов
/ 21 апреля 2010

Вам не нужно вызывать ReadLine(), прочитанная строка текста является одним из свойств, переданных вам в DataReceivedEventArgs объекте.

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