点击按钮后,我试图与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
和派生工具(它们无法按预期工作)。