WPF: отправлять аргументы в фоновый поток и получать вывод после его запуска - PullRequest
0 голосов
/ 02 июля 2019

У меня есть модель глубокого обучения, написанная на python, и в качестве входных данных требуется путь к видео. Я пытаюсь создать графический интерфейс для этой модели с использованием WPF, и модель была преобразована в файл приложения.

Поскольку время, необходимое модели для импорта пакетов, слишком велико, я хочу запустить процесс файла приложения python при инициализации главного окна WPF. Затем я могу записать видео и отправить путь этого видео этому процессу, а после того, как получу вывод от этой модели, я могу записать другое видео и снова отправить новый путь к модели.

Я пытался использовать backgroundworker и thread, но оба они могут отправлять аргументы только при инициализации процесса, и ни один из них не может отправлять аргументы в фоновый процесс во время выполнения процесса. И только после завершения процесса я могу получить вывод из фонового потока.

private void bw_DoWork(object sender, DoWorkEventArgs e)
{
    Process p_exe = new Process();
    p_exe.StartInfo.FileName = @"C:/dist/predict/predict.exe";
    p_exe.StartInfo.UseShellExecute = false;
    p_exe.StartInfo.RedirectStandardOutput = true;
    p_exe.StartInfo.RedirectStandardInput = true;
    p_exe.StartInfo.CreateNoWindow = true;
    p_exe.StartInfo.Arguments = e.Argument.ToString();
    p_exe.Start();

    e.Result = p_exe.StandardOutput.ReadToEnd();

    p_exe.WaitForExit();
    p_exe.Close();

}

Как я могу отправлять аргументы и получать выходные данные из фонового потока во время выполнения процесса?

...