static Process[] processArray = new Process[1];
static void Main(string[] args)
{
bool programIsRunning = false;
string process = "file location file name .exe";
processArray = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(process));
Console.WriteLine(processArray);
do
{
if (processArray == null && programIsRunning == false)
{
Process.Start("file location file name .exe");
programIsRunning = true;
}
} while (true);
}
このコードを実行して1回目のexeを起動すると、2回目の実行は開始されません。しかし、もし私がif (processArray != null && programIsRunning == false)
を実行すると、2番目のexeファイルは、最初のファイルが実行されていなくても実行されます。実行中の別のexeファイルに依存してexeファイルを実行する方法
while(true)の代わりにtimer inseadを使用する方がずっと良いです。そうでなければ、プログラムは、そのタスクに利用可能なすべてのリソースを頻繁に使用しているかどうかをチェックします。そしてなぜprocessArray == nullをチェックするのですか?明らかに 'processArray = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(process));'は作成され、サイクル中に次のdoで更新されません。 – Vladimir
Process.GetProcessesByNameは、プロセスが実行されていない場合はnullを返しません。空の配列を返します。 – sgmoore
少なくともデバッガを使用してコードをステップさせて、processArrayの値をチェックするためにデバッガを使用します。 – MethodMan