プロセスを起動している間、テキスト ボックスを制御できません。
私の質問は、プロセスの起動中にテキストボックスを変更するにはどうすればよいですか?
プロセスが起動される前にテキストボックスを変更しようとしても、まだ機能しません。
このフォーラムでいくつかの回答を見つけましたが、説明は私の問題に実装するのが少し難しいです。
バッチ ファイルを実行してバックアップを作成する小さなプログラムを作成しました。バックアップの実行中は、テキストボックスを変更したり、ボタンを無効にしたりすることはできません。
これが正常であることはすでに確認しましたが、ソリューションを実装する方法がわかりません。Dispatcher.invoke
以下に示すように、私の最後の試みはでした。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
tb_Status.Text = "Ready";
}
public void status()
{
Dispatcher.Invoke(DispatcherPriority.Send, new Action( () => { tb_Status.Text = "The backup is running!"; } ) );
}
public void process()
{
try
{
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "Robocopy.bat";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
tb_Output.Text = File.ReadAllText("Backup\\log.txt");
}
catch (Exception ex)
{
tb_Status.Text = ex.Message.ToString();
}
}
private void Bt_Start_Click(object sender, EventArgs e)
{
status();
Directory.CreateDirectory("Backup");
process();
tb_Status.Text = "The backup finished";
File.Delete("Backup\\log.txt");
}
}