Ich habe drei Befehle auszuführen, die darauf warten, dass jeder Befehl beendet wird, bevor der nächste gestartet wird.Wie kann ich mehrere Befehle ausführen, die darauf warten, dass jeder Befehl beendet wird, bevor der nächste gestartet wird?
Basierend auf meiner Implementierung nach Abschluss der ersten wird die zweite gestartet, aber backgroundWorker1_RunWorkerCompleted wird überhaupt nicht erhöhen.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace cmd_commands
{
public partial class Form1 : Form
{
string[] commands = new string[] {
@"test",
@"test1",
@"test2" };
int command = 0;
public Form1()
{
InitializeComponent();
}
public void runCmd(string command)
{
ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
cmdsi.Arguments = command;
Process cmd = Process.Start(cmdsi);
cmd.WaitForExit();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
runCmd(commands[command]);
backgroundWorker1.ReportProgress(0, command);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
label1.Text = "Working on command number: " + e.UserState.ToString();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
command++;
runCmd(commands[command]);
}
}
}
Hat meine Antwort Hilfe? –
Wenn es nicht mehr gibt, wird es schließlich abstürzen, weil Sie nie Grenzen dies überprüfen: 'runCmd (Befehle [Befehl])'. – DonBoitnott
Das sollte helfen: https://Stackoverflow.com/questions/1728099/visual-c-sharp-gui-stops-responding-when-process-waitforexit-is-used – DonBoitnott