c # - Sådan registreres, om mit program kører i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en C # konsol app. Det kommer til at køre som en planlagt opgave.


Jeg vil have min EXE til at afslutte hurtigt, hvis det finder ud af, at en anden proces stadig kører fra den foregående udførelse af tidsplanopgaver.


Jeg kan ikke synes at finde vej til at lade min app registrere de aktive processer, og så ved, om det allerede kører eller ej.


Tak for ideer.
Peter

Bedste reference


En meget almindelig teknik er at skabe en mutex, når din proces starter. Hvis du ikke kan oprette mutex betyder det, at der er en anden forekomst kører.


Dette er stikprøven fra Nathan s Link:


//Declare a static Mutex in the main form or class...
private static Mutex \_AppMutex = new Mutex(false, "MYAPP");

// Check the mutex before starting up another possible instance
[STAThread]
static void Main(string[] args) 
{
  if (MyForm.\_AppMutex.WaitOne(0, false))
  {
    Application.Run(new MyForm());
  }
  else
  {
    MessageBox.Show("Application Already Running");
  }
  Application.Exit();
}

Andre referencer 1


prøve
System.Diagnostics.Process


getProcesses ()

Andre referencer 2


Brug en mutex:


// Allow only one instance of app
// See http://www.yoda.arachsys.com/csharp/faq/#one.application.instance
bool firstInstance;
\_mutex = new Mutex(false, "Local\[UniqueName]", out firstInstance);


Link til reference i kommentar [3]

Andre referencer 3


Er der ikke noget i System.Diagnostics til kontrol af processer?


Rediger: Kan nogen af ​​disse links hjælpe dig? Jeg kan se, hvordan de kan være nyttige.



  • Sådan kontrolleres, om en applikation kører

  • Looping gennem alle processer på systemet



Jeg beklager, at alt jeg kan gøre, er at give dig links til andre ting. Jeg har aldrig haft brug af System.Diagnostics, men forhåbentlig kan det hjælpe dig eller en anden. [4] [5]