private void OnConsoleDataRecv(object sender, DataReceivedEventArgs e) { if (!String.IsNullOrEmpty(e.Data)) { console_buffer.Append(e.Data); console_buffer.Append(Environment.NewLine); // if (queueFlag) return; // queueFlag = true; Dispatcher.BeginInvoke(new Action(delegate { // queueFlag = false; CLIOutput.Focus(); this.CLIOutput.AppendText(e.Data); this.CLIOutput.AppendText(Environment.NewLine); CLIOutput.Select(CLIOutput.Text.Length, 0); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle, null); } }
private void OnRun(object sender, RoutedEventArgs e) { if (!File.Exists("waifu2x-ncnn-vulkan.exe")) { MessageBox.Show(@"waifu2x-ncnn-vulkan.exe is missing!"); return; } if (param_src == null) { MessageBox.Show(@"source images is not found!"); return; } // Sets Source // The source must be a file or folder that exists if (System.Text.RegularExpressions.Regex.IsMatch( txtGPU_ID.Text, @"^(\d+)$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { param_gpu_id.Clear(); param_gpu_id.Append("-g "); param_gpu_id.Append(txtGPU_ID.Text); } else { param_gpu_id.Clear(); } if (System.Text.RegularExpressions.Regex.IsMatch( txtBlocksize.Text, @"^(\d+)$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { if (int.Parse(txtBlocksize.Text) % 4 != 0) { MessageBox.Show(@"Block size must be a multiple of 4"); return; } else { param_block.Clear(); param_block.Append("-t "); param_block.Append(txtBlocksize.Text); } } else { param_block.Clear(); } if (((int)slider_zoom.Value & ((int)slider_zoom.Value - 1)) != 0) { MessageBox.Show(@"Magnification must be a power of two."); return; } if (System.Text.RegularExpressions.Regex.IsMatch( txtThread.Text, @"^(\d+:\d+:\d+)$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { param_thread.Clear(); param_thread.Append("-j "); param_thread.Append(txtThread.Text); } else { param_thread.Clear(); } binary_path.Clear(); if (checkPrecision_fp32.IsChecked == true) { binary_path.Append(".\\fp32\\waifu2x-ncnn-vulkan.exe "); } else { binary_path.Append(".\\waifu2x-ncnn-vulkan.exe "); } // logをクリアする this.CLIOutput.Clear(); if (this.txtDstPath.Text.Trim() != "") { if (Directory.Exists(this.txtDstPath.Text) == false) { try { Directory.CreateDirectory(this.txtDstPath.Text); } catch (Exception) { MessageBox.Show(@"Failed to create output destination folder."); return; } } } Commandline.Clear(); int FileCount = 0; for (int i = 0; i < param_src.Length; i++) { FileCount++; } Commandline.Append("@echo off\r\n"); Commandline.Append("chcp 65001 >nul\r\n"); Commandline.Append("if \"%~1\"==\"sub_rename\" goto sub_rename\r\n"); Commandline.Append("set \"FileCount=" + FileCount + "\"\r\n"); Commandline.Append("set \"ProcessedCount=0\"\r\n"); Commandline.Append("set \"mode=" + param_mode.ToString() + "\"\r\n"); Commandline.Append("set \"Scale_ratio=" + this.slider_zoom.Value.ToString() + "\"\r\n"); Commandline.Append("if \"%mode%\"==\"noise\" set Scale_ratio=1\r\n"); Commandline.Append("set \"Output_no_overwirit=" + checkOutput_no_overwirit.IsChecked.ToString() + "\"\r\n"); Commandline.Append("set \"Prevent_double_extensions=" + checkPrevent_double_extensions.IsChecked.ToString() + "\"\r\n"); Commandline.Append("if not \"%FileCount%\"==\"1\" echo progress %ProcessedCount%/%FileCount%\r\n"); for (int i = 0; i < param_src.Length; i++) { param_dst.Clear(); if (this.txtDstPath.Text.Trim() != "") { param_dst.Append("\""); param_dst.Append(this.txtDstPath.Text); param_dst.Append("\\"); param_dst.Append(System.IO.Path.GetFileNameWithoutExtension(param_src[i].Replace("%", "%%%%"))); if (File.Exists(param_src[i])) { param_dst.Append(".png\""); } else if (Directory.Exists(param_src[i])) { param_dst.Append("\""); } } else { param_dst.Append("\""); System.IO.DirectoryInfo hDirInfo = System.IO.Directory.GetParent(param_src[i]); param_dst.Append(hDirInfo.FullName); param_dst.Append("\\"); param_dst.Append(System.IO.Path.GetFileNameWithoutExtension(param_src[i].Replace("%", "%%%%"))); if (param_model.ToString().Replace("-m ", "") == "models-cunet") { param_dst.Append("(CUnet)"); } if (param_model.ToString().Replace("-m ", "") == "models-upconv_7_anime_style_art_rgb") { param_dst.Append("(UpRGB)"); } if (param_model.ToString().Replace("-m ", "") == "models-upconv_7_photo") { param_dst.Append("(UpPhoto)"); } param_dst.Append("("); param_dst.Append(param_mode.ToString().Replace("-m ", "")); param_dst.Append(")"); if (param_mode.ToString() == "noise" || param_mode.ToString() == "noise_scale" || param_mode.ToString() == "auto_scale") { param_dst.Append("("); param_dst.Append("Level"); param_dst.Append(param_denoise.ToString()); param_dst.Append(")"); } if (param_mode.ToString() == "scale" || param_mode.ToString() == "noise_scale" || param_mode.ToString() == "auto_scale") { param_dst.Append("(x"); param_dst.Append(this.slider_zoom.Value.ToString()); param_dst.Append(")"); } if (File.Exists(param_src[i])) { param_dst.Append(".png\""); } else if (Directory.Exists(param_src[i])) { param_dst.Append("\""); } } param_mag.Clear(); param_mag.Append("-s "); param_mag.Append(this.slider_value.Text); param_denoise2.Clear(); param_denoise2.Append(param_denoise.ToString()); // Set mode if (param_mode.ToString() == "noise") { param_mag.Clear(); param_mag.Append("-s "); param_mag.Append("1"); } if (param_mode.ToString() == "scale") { param_denoise2.Clear(); param_denoise2.Append("-1"); } Commandline.Append("call :waifu2x_run " + "\"" + param_src[i].Replace("%", "%%%%") + "\" " + param_dst + "\r\n"); } string full_param = String.Join(" ", "-v ", "-i \"%~1\"", "-o \"%~2\"", param_mag.ToString(), "-n %noise_level%", param_block.ToString(), param_model.ToString(), param_gpu_id.ToString(), param_thread.ToString()); string multiple_full_param = String.Join(" ", "-v ", "-i %Temporary_input%", "-o %Temporary_output%", "-s 2", "-n %Temporary_noise_level%", param_block.ToString(), param_model.ToString(), param_gpu_id.ToString(), param_thread.ToString()); Guid g = System.Guid.NewGuid(); random32.Clear(); random32.Append(g.ToString("N").Substring(0, 32)); Commandline.Append("exit /b\r\n"); Commandline.Append("\r\n"); Commandline.Append(":waifu2x_run\r\n"); Commandline.Append("for %%i in (\"%~2\") do set \"Source_name=%%~ni\"\r\n"); Commandline.Append("if \"%Output_no_overwirit%\"==\"True\" if exist \"%~2\" goto waifu2x_run_skip\r\n"); Commandline.Append("set \"noise_level=" + param_denoise2 + "\"\r\n"); Commandline.Append("if \"" + param_mode.ToString() + "\"==\"auto_scale\" if not \"%input_image_jpg%\"==\"1\" set \"noise_level=-1\"\r\n"); Commandline.Append("for %%i in (\"%~1\") do set \"Attribute=%%~ai\"\r\n"); Commandline.Append("if %Scale_ratio% LEQ 2 if \"%Attribute:~0,1%\"==\"d\" if not exist \"%~2\" (\r\n"); Commandline.Append(" echo mkdir \"%~2\"\r\n"); Commandline.Append(" mkdir \"%~2\"\r\n"); Commandline.Append(")\r\n"); Commandline.Append("set Temporary_input=\"%~1\"\r\n"); Commandline.Append("if %Scale_ratio% GTR 2 (\r\n"); Commandline.Append(" for /L %%i in (2,2,%Scale_ratio%) do (\r\n"); Commandline.Append(" call :sub_multiple_magnify %%i\r\n"); Commandline.Append(" )\r\n"); Commandline.Append(") else (\r\n"); Commandline.Append(" echo " + binary_path + full_param + "\r\n"); Commandline.Append(" " + binary_path + full_param + "\r\n"); Commandline.Append(")\r\n"); Commandline.Append("if %Scale_ratio% LEQ 2 if \"%Attribute:~0,1%\"==\"d\" if \"%Prevent_double_extensions%\"==\"True\" (\r\n"); Commandline.Append(" pushd \"%~2\"\r\n"); Commandline.Append(" PowerShell \"Get-ChildItem *.png | Rename-Item -NewName { $_.Name -replace '(.png.png|.jpg.png|.jpeg.png|.bmp.png|.gif.png|.tif.png|.tiff.png|.webp.png)$','.png' }\"\r\n"); Commandline.Append(" popd\r\n"); Commandline.Append(")\r\n"); Commandline.Append("if %Scale_ratio% GTR 2 (\r\n"); Commandline.Append(" move /y %Temporary_output% \"%~2\" >nul 2>&1\r\n"); Commandline.Append(" rd /s /q \"%TEMP%\\" + random32.ToString() + "\\\"\r\n"); Commandline.Append(")\r\n"); Commandline.Append(":waifu2x_run_skip\r\n"); Commandline.Append("set /a ProcessedCount=%ProcessedCount%+1\r\n"); Commandline.Append("if not \"%FileCount%\"==\"1\" echo progress %ProcessedCount%/%FileCount%\r\n"); Commandline.Append("exit /b\r\n"); Commandline.Append("\r\n"); Commandline.Append(":sub_multiple_magnify\r\n"); Commandline.Append("for %%i in (2,4,8,16,32,64,128,256) do if \"%~1\"==\"%%i\" goto sub_multiple_magnify2\r\n"); Commandline.Append("exit /b\r\n"); Commandline.Append(":sub_multiple_magnify2\r\n"); Commandline.Append("set Temporary_output=\"%TEMP%\\" + random32.ToString() + "\\%Source_name%_x%~1.png\"\r\n"); Commandline.Append("if \"%Attribute:~0,1%\"==\"d\" set Temporary_output=\"%TEMP%\\" + random32.ToString() + "\\%Source_name%_x%~1\"\r\n"); Commandline.Append("if \"%Attribute:~0,1%\"==\"d\" mkdir %Temporary_output%\r\n"); Commandline.Append("if not \"%Attribute:~0,1%\"==\"d\" if not exist \"%TEMP%\\" + random32.ToString() + "\\\" mkdir \"%TEMP%\\" + random32.ToString() + "\\\"\r\n"); Commandline.Append("set Temporary_noise_level=-1\r\n"); Commandline.Append("if \"%~1\"==\"2\" if not \"%noise_level%\"==\"-1\" set \"Temporary_noise_level=%noise_level%\"\r\n"); Commandline.Append("echo " + binary_path + multiple_full_param + "\r\n"); Commandline.Append(binary_path + multiple_full_param + "\r\n"); Commandline.Append("if \"%Attribute:~0,1%\"==\"d\" if \"%Prevent_double_extensions%\"==\"True\" (\r\n"); Commandline.Append(" pushd %Temporary_output%\r\n"); Commandline.Append(" PowerShell \"Get-ChildItem *.png | Rename-Item -NewName { $_.Name -replace '(.png.png|.jpg.png|.jpeg.png|.bmp.png|.gif.png|.tif.png|.tiff.png|.webp.png)$','.png' }\"\r\n"); Commandline.Append(" popd\r\n"); Commandline.Append(")\r\n"); Commandline.Append("set Temporary_input=%Temporary_output%\r\n"); Commandline.Append("exit /b\r\n"); waifu2x_bat.Clear(); waifu2x_bat.Append(System.IO.Path.GetTempPath() + "waifu2x_" + random32.ToString() + ".bat"); System.IO.StreamWriter sw = new System.IO.StreamWriter( @waifu2x_bat.ToString(), false // , // System.Text.Encoding.GetEncoding("utf-8") ); sw.Write(Commandline); sw.Close(); this.btnRun.IsEnabled = false; this.btnAbort.IsEnabled = true; // Setup ProcessStartInfo psinfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec"); psinfo.StandardErrorEncoding = Encoding.UTF8; psinfo.StandardOutputEncoding = Encoding.UTF8; psinfo.Arguments = "/c \"" + waifu2x_bat.ToString() + "\""; psinfo.RedirectStandardInput = true; psinfo.RedirectStandardError = true; psinfo.RedirectStandardOutput = true; psinfo.UseShellExecute = false; psinfo.WorkingDirectory = System.AppDomain.CurrentDomain.BaseDirectory; psinfo.CreateNoWindow = true; psinfo.WindowStyle = ProcessWindowStyle.Hidden; pHandle.StartInfo = psinfo; pHandle.EnableRaisingEvents = true; if (EventHandler_Flag == false) { pHandle.OutputDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.ErrorDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.Exited += new EventHandler(OnProcessExit); EventHandler_Flag = true; } // Starts working console_buffer.Clear(); try { //MessageBox.Show(full_param); bool pState = pHandle.Start(); } catch (Exception) { try { pHandle.Kill(); } catch (Exception) { /*Nothing*/ } Errormessage("Failed to start waifu2x.exe."); //throw; } Dispatcher.BeginInvoke(new Action(delegate { CLIOutput.Focus(); // this.CLIOutput.AppendText("waifu2x.exe " + full_param.ToString()); // this.CLIOutput.AppendText(Environment.NewLine); // this.CLIOutput.AppendText(Environment.NewLine); CLIOutput.Select(CLIOutput.Text.Length, 0); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle, null); try { pHandle.BeginOutputReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginOutputReadLine crashed...\n"; } try { pHandle.BeginErrorReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginErrorReadLine crashed...\n"; } //pHandle.BeginErrorReadLine(); //MessageBox.Show("Some parameters do not mix well and crashed..."); //pHandle.WaitForExit(); /* * pHandle.CancelOutputRead(); * pHandle.Close(); * this.btnAbort.IsEnabled = false; * this.btnRun.IsEnabled = true; * this.CLIOutput.Text = console_buffer.ToString(); */ }
private void OnRun(object sender, RoutedEventArgs e) { if (!File.Exists("waifu2x.exe")) { MessageBox.Show(@"waifu2x.exe is missing!"); return; } // Sets Source // The source must be a file or folder that exists if (File.Exists(this.txtSrcPath.Text) || Directory.Exists(this.txtSrcPath.Text)) { if (this.txtSrcPath.Text.Trim() == "") //When source path is empty, replace with current folder { param_src.Clear(); // param_src.Append("-i "); param_src.Append("\""); param_src.Append(App.directory); param_src.Append("\""); } else { param_src.Clear(); // param_src.Append("-i "); param_src.Append("\""); param_src.Append(this.txtSrcPath.Text); param_src.Append("\""); } } else { Errormessage(@"The source folder or file does not exists!"); return; } param_mag.Clear(); // param_mag.Append("-s "); param_mag.Append(this.slider_value.Text); // 数字が入力されてなかったらクリアする // logをクリアする this.CLIOutput.Clear(); // Set Destination if (this.txtDstPath.Text.Trim() == "") { param_dst.Clear(); param_dst.Append("\""); System.IO.DirectoryInfo hDirInfo = System.IO.Directory.GetParent(this.txtSrcPath.Text); param_dst.Append(hDirInfo.FullName); param_dst.Append("\\"); param_dst.Append(System.IO.Path.GetFileNameWithoutExtension(this.txtSrcPath.Text)); param_dst.Append("(CUnet)"); param_dst.Append("("); param_dst.Append(param_mode.ToString().Replace("-m ", "")); param_dst.Append(")"); if (param_mode.ToString() == "-m noise" || param_mode.ToString() == "-m noise_scale") { param_dst.Append("("); param_dst.Append("Level"); param_dst.Append(param_denoise.ToString()); param_dst.Append(")"); } if (param_mode.ToString() == "-m scale" || param_mode.ToString() == "-m noise_scale") { param_dst.Append("(x"); param_dst.Append(this.slider_zoom.Value.ToString()); param_dst.Append(")"); } param_dst.Append(".png\""); } else { param_dst.Clear(); param_dst.Append("\""); param_dst.Append(this.txtDstPath.Text); param_dst.Append("\""); } // Set input format // param_informat.Clear(); //param_informat.Append("-l "); // param_informat.Append(this.txtExt.Text); //param_informat.Append(@":"); //param_informat.Append(this.txtExt.Text.ToUpper()); // Set output format //param_outformat.Clear(); //param_outformat.Append("-e "); //param_outformat.Append(this.txtOExt.Text); // Set scale ratio param_denoise2.Clear(); param_denoise2.Append(param_denoise.ToString()); // Set mode if (param_mode.ToString() == "-m noise") { param_mag.Clear(); param_mag.Append("1"); } if (param_mode.ToString() == "-m scale") { param_denoise2.Clear(); param_denoise2.Append("-1"); } this.btnRun.IsEnabled = false; this.btnAbort.IsEnabled = true; // Assemble parameters string full_param = String.Join(" ", param_src.ToString(), param_dst.ToString(), // param_informat.ToString(), // param_mode.ToString(), param_denoise2.ToString(), param_mag.ToString() // param_block.ToString(), ); // Setup ProcessStartInfo psinfo.FileName = "waifu2x.exe"; psinfo.Arguments = full_param; psinfo.RedirectStandardError = true; psinfo.RedirectStandardOutput = true; psinfo.UseShellExecute = false; psinfo.WorkingDirectory = System.AppDomain.CurrentDomain.BaseDirectory; psinfo.CreateNoWindow = true; psinfo.WindowStyle = ProcessWindowStyle.Hidden; pHandle.StartInfo = psinfo; pHandle.EnableRaisingEvents = true; if (EventHandler_Flag == false) { pHandle.OutputDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.ErrorDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.Exited += new EventHandler(OnProcessExit); EventHandler_Flag = true; } // Starts working console_buffer.Clear(); try { //MessageBox.Show(full_param); bool pState = pHandle.Start(); } catch (Exception) { try { pHandle.Kill(); } catch (Exception) { /*Nothing*/ } Errormessage("Failed to start waifu2x.exe."); //throw; } Dispatcher.BeginInvoke(new Action(delegate { CLIOutput.Focus(); this.CLIOutput.AppendText("waifu2x.exe " + full_param.ToString()); this.CLIOutput.AppendText(Environment.NewLine); this.CLIOutput.AppendText(Environment.NewLine); CLIOutput.Select(CLIOutput.Text.Length, 0); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle, null); try { pHandle.BeginOutputReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginOutputReadLine crashed...\n"; } try { pHandle.BeginErrorReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginErrorReadLine crashed...\n"; } //pHandle.BeginErrorReadLine(); //MessageBox.Show("Some parameters do not mix well and crashed..."); //pHandle.WaitForExit(); /* * pHandle.CancelOutputRead(); * pHandle.Close(); * this.btnAbort.IsEnabled = false; * this.btnRun.IsEnabled = true; * this.CLIOutput.Text = console_buffer.ToString(); */ }
private void OnRun(object sender, RoutedEventArgs e) { // Sets Source // The source must be a file or folder that exists if (File.Exists(this.txtSrcPath.Text) || Directory.Exists(this.txtSrcPath.Text)) { if (this.txtSrcPath.Text.Trim() == "") //When source path is empty, replace with current folder { param_src.Clear(); param_src.Append("-i "); param_src.Append("\""); param_src.Append(App.directory); param_src.Append("\""); } else { param_src.Clear(); param_src.Append("-i "); param_src.Append("\""); param_src.Append(this.txtSrcPath.Text); param_src.Append("\""); param_WorkingDirectory.Clear(); if (Directory.Exists(this.txtSrcPath.Text)) { param_WorkingDirectory.Append(this.txtSrcPath.Text); } if (File.Exists(this.txtSrcPath.Text)) { System.IO.DirectoryInfo hDirInfo = System.IO.Directory.GetParent(this.txtSrcPath.Text); param_WorkingDirectory.Append(hDirInfo); } } } else { Errormessage(@"The source folder or file does not exists!"); return; } // waifu2x-chainerのパスを設定する param_waifu2x_chainer_path.Clear(); if (File.Exists(this.txtWaifu2x_chainerPath.Text + "\\waifu2x.py")) { param_waifu2x_chainer_path.Append("\"" + this.txtWaifu2x_chainerPath.Text + "\\waifu2x.py\""); } else { Errormessage("waifu2x-chainer folder is missing!"); return; } // モデルフォルダを決定する param_model.Clear(); if (param_arch.ToString().Trim() == "-a 0") { param_model.Append("-d \"" + this.txtWaifu2x_chainerPath.Text + "\\models\\vgg7\""); } if (param_arch.ToString().Trim() == "-a 1") { param_model.Append("-d \"" + this.txtWaifu2x_chainerPath.Text + "\\models\\upconv7\""); } if (param_arch.ToString().Trim() == "-a 2") { param_model.Append("-d \"" + this.txtWaifu2x_chainerPath.Text + "\\models\\resnet10\""); } if (param_arch.ToString().Trim() == "-a 3") { param_model.Append("-d \"" + this.txtWaifu2x_chainerPath.Text + "\\models\\upresnet10\""); } param_color.Clear(); param_color.Append("-c " + ComboColor_Mode.SelectedValue.ToString().ToLowerInvariant()); param_mag.Clear(); param_mag.Append("-s "); param_mag.Append(this.slider_value.Text); // 数字が入力されてなかったらクリアする param_width.Clear(); if (!System.Text.RegularExpressions.Regex.IsMatch( output_width.Text, @"^\d+$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { output_width.Clear(); } else { param_mag.Clear(); param_width.Append("-W " + this.output_width.Text); } param_height.Clear(); if (!System.Text.RegularExpressions.Regex.IsMatch( output_height.Text, @"^\d+$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { output_height.Clear(); } else { param_mag.Clear(); param_height.Append("-H " + this.output_height.Text); } if (System.Text.RegularExpressions.Regex.IsMatch( txtDevice.Text, @"^(\d+)$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { param_device.Clear(); param_device.Append("-g "); param_device.Append(txtDevice.Text); } else { param_device.Clear(); } param_tta.Clear(); if (cbTTA.IsChecked == true) { param_tta.Append("-t -T "); param_tta.Append(ComboTTA_level.SelectedValue.ToString()); } // logをクリアする this.CLIOutput.Clear(); // Set Destination if (this.txtDstPath.Text.Trim() == "") { param_dst.Clear(); } else { param_dst.Clear(); param_dst.Append("-o "); param_dst.Append("\""); param_dst.Append(this.txtDstPath.Text); param_dst.Append("\""); } // Set input format // param_informat.Clear(); //param_informat.Append("-l "); // param_informat.Append(this.txtExt.Text); //param_informat.Append(@":"); //param_informat.Append(this.txtExt.Text.ToUpper()); // Set output format //param_outformat.Clear(); //param_outformat.Append("-e "); //param_outformat.Append(this.txtOExt.Text); // Set scale ratio param_denoise2.Clear(); param_denoise2.Append(param_denoise.ToString()); // Set mode if (param_mode.ToString() == "-m noise") { param_width.Clear(); param_height.Clear(); param_mag.Clear(); } if (param_mode.ToString() == "-m scale") { param_denoise2.Clear(); } this.btnRun.IsEnabled = false; this.btnAbort.IsEnabled = true; // Assemble parameters string full_param = String.Join(" ", param_waifu2x_chainer_path.ToString(), param_src.ToString(), param_dst.ToString(), // param_informat.ToString(), // param_outformat.ToString(), param_mode.ToString(), param_mag.ToString(), param_width.ToString(), param_height.ToString(), param_denoise2.ToString(), param_arch.ToString(), param_model.ToString(), param_color.ToString(), param_block.ToString(), param_batch.ToString(), param_device.ToString(), param_tta.ToString()); // Setup ProcessStartInfo psinfo.FileName = "python"; psinfo.Arguments = full_param; psinfo.RedirectStandardError = true; psinfo.RedirectStandardOutput = true; psinfo.UseShellExecute = false; psinfo.WorkingDirectory = param_WorkingDirectory.ToString(); psinfo.CreateNoWindow = true; psinfo.WindowStyle = ProcessWindowStyle.Hidden; pHandle.StartInfo = psinfo; pHandle.EnableRaisingEvents = true; if (EventHandler_Flag == false) { pHandle.OutputDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.ErrorDataReceived += new DataReceivedEventHandler(OnConsoleDataRecv); pHandle.Exited += new EventHandler(OnProcessExit); EventHandler_Flag = true; } // Starts working console_buffer.Clear(); try { //MessageBox.Show(full_param); bool pState = pHandle.Start(); } catch (Exception) { try { pHandle.Kill(); } catch (Exception) { /*Nothing*/ } Errormessage("Failed to start Python."); //throw; } Dispatcher.BeginInvoke(new Action(delegate { CLIOutput.Focus(); this.CLIOutput.AppendText("WorkingDirectory " + param_WorkingDirectory.ToString()); this.CLIOutput.AppendText(Environment.NewLine); this.CLIOutput.AppendText("python " + full_param.ToString()); this.CLIOutput.AppendText(Environment.NewLine); this.CLIOutput.AppendText(Environment.NewLine); CLIOutput.Select(CLIOutput.Text.Length, 0); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle, null); try { pHandle.BeginOutputReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginOutputReadLine crashed...\n"; } try { pHandle.BeginErrorReadLine(); } catch (Exception) { this.CLIOutput.Clear(); this.CLIOutput.Text = "BeginErrorReadLine crashed...\n"; } //pHandle.BeginErrorReadLine(); //MessageBox.Show("Some parameters do not mix well and crashed..."); //pHandle.WaitForExit(); /* * pHandle.CancelOutputRead(); * pHandle.Close(); * this.btnAbort.IsEnabled = false; * this.btnRun.IsEnabled = true; * this.CLIOutput.Text = console_buffer.ToString(); */ }