0

サーバーの自動リスタータを作成したいと考えています。チェックボックスを追加し、必要なすべてのチェックを行いましたが、クラッシュ時にそのプロセスを再起動する方法がわかりません。

これが私のコードです:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    string world = textBox1.Text;
    string auth = textBox2.Text;

    if (checkBox1.Checked == true)
    {
        if (textBox1.Text.Trim().Length == 0 || textBox2.Text.Trim().Length == 0)
        {
            MessageBox.Show("Please check if you selected the path for worldserver and authserver");
        }
        else
        {
            //here i need something to restart those 2 processes after crash/close
        }
    }   
}
4

2 に答える 2

0

プロセスを開始する最も簡単な方法は、クラスのStart静的メソッドを使用することです。Process

Process.Start("yourapp.exe");

ProcessStartInfoより具体的なオプションにアクセスするには、代わりにオブジェクトを設定できます。

var startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "yourapp.exe";
startInfo.Arguments = "-arg1 val1";

var exeProcess = Process.Start(startInfo);
exeProcess.Start();

問題のプロセスがまだ実行されているかどうかを確認するには、これを使用できます。

var matchingProcesses = Process.GetProcessesByName("yourapp");
var isRunning = matchingProcesses.Length > 0;

そして、それをメソッドに入れて、数秒または数ミリ秒ごとにポーリングすることができます (応答したい速度に応じて):

var aTimer = new Timer();
aTimer.Elapsed += new ElapsedEventHandler(YourMethod);
aTimer.Interval = 1000;
aTimer.Enabled = true;

これらのクラスは、それぞれSystem.DiagnosticsおよびSystem.Timers名前空間にあります。

于 2013-10-26T17:34:19.023 に答える