Сообщите о прогрессе от фонового работника, выполняющего файл jar - PullRequest
0 голосов
/ 09 октября 2018

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

        worker = new BackgroundWorker();
        worker.DoWork += worker_DoWork;
        worker.ProgressChanged += new ProgressChangedEventHandler(ProgressChanged);
        worker.RunWorkerCompleted += worker_RunWorkerCompleted;
        worker.WorkerReportsProgress = true;
        worker.WorkerSupportsCancellation = true;
        worker.RunWorkerAsync(); //start transfer process

    public void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    Process Process = new Process();
        ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + Command); //command is the jar file to be execute. It will copy files.
        ProcessInfo.RedirectStandardError = true;
        ProcessInfo.CreateNoWindow = false;
        ProcessInfo.UseShellExecute = false;
        Process = Process.Start(ProcessInfo);

        Process.WaitForExit();
        ExitCode = Process.ExitCode;
        Process.Close();

        return ExitCode;

}

У меня есть индикатор выполнения во внешнем интерфейсе, который можно обновить с помощью worker.ReportProgress (), но мне нужно понять, как получить информацию из backGroundWorker для ее передачиto worker.ReportProgress ().Или любой другой способ сообщить о прогрессе.

Большое спасибо!

...