C#-在Task.Run之后调用beginoutputreadline创建混合同步和异步的异常

时间:2019-06-24 19:38:20

标签: c# asynchronous subprocess task-parallel-library

点击按钮后,我试图与Task.Run异步运行自定义方法。

使用Task.Run(单击按钮时)运行此自定义方法后,调用myProcess.BeginOutputReadLine()会导致“无法混合同步和异步...”异常。

调用myProcess.BeginOutputReadLine()的方法是同步方法。而且,自定义方法中的每个方法都是异步的,甚至对象BeginTask()中的方法_DownloadManager也都是异步的。

唯一的“异步”部分是在Button_Clicked事件中调用Task.Run(我需要使用Task.Run而不是await / async,因为它无法按预期运行)。

代码按钮点击事件:

await Task.Run(() => _DownloadManager.BeginTask());

这是我称为BeginOutputReadLine的代码:

_downloadStarted = true;
_tempFilePath = "\"" + _finalSavePath + ".f140" + "\"";
youtube_dl_process.StartInfo.Arguments = "-o " + _tempFilePath + " -f " + "140 " + _Url;
youtube_dl_process.Start();
youtube_dl_process.BeginOutputReadLine();
youtube_dl_process.BeginErrorReadLine();
youtube_dl_process.WaitForExit();

如何使用Task.Run调用自定义方法,然后在这个新的“线程”中启动一个进程并使用BeginOutputReadLine()?我无法使用myProcess.StandardOutput.ReadLine和派生工具(它们无法按预期工作)。

0 个答案:

没有答案