Announcement

Collapse
No announcement yet.

Doppelstart vermeiden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppelstart vermeiden

    Noch ein Problem plagt mich:
    Ich verwende Win7 x64 und VS2010 Ultimate und möchte gerne dass in meiner Anwendung ein Programm nur einmal aufgerufen werden kann. Die Hilfe bietet mir nichts was ich brauchen kann, kann mir einer einen Tipp geben (Code?),
    danke mfg o.

  • #2
    Das ist ziemlich kompliziert. Lies einmal ein paar Treffer von mehrere Programminstanzen verhindern durch. Das ist zwar alles C#, sollte aber trotzdem verständlich sein, zumal VB ein paar Vereinfachungen dafür anbietet.

    Gruß Jürgen

    Comment


    • #3
      Die Hilfe bietet mir nichts was ich brauchen kann
      Sollte sie aber. Öffne doch einfach mal die Projektoptionen zu deinem Projekt. Auf dem ersten Tab Applikation wirst du die Checkbox 'Make single instance application' finden bzw. die Checkbox 'Einzelinstanzanwendung' in einem deutschen Visual Studio (zumindest behauptet die Hilfe das es dort so heißt).

      Comment


      • #4
        ich bräuchte dies halt für VC2010

        Comment


        • #5
          Lässt sich dass umsetzen:

          http://www.marquardtnet.info/cecke/q...quicky_19.html
          Christian

          Comment


          • #6
            meines Wissens gab es in VS2008 noch einfach per Häkchen die Möglichkeit dies zu verhindern. Und man konnte dann noch ein Event abfangen und zum Beispiel eine Meldung ausgeben ...
            Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

            Comment


            • #7
              Lösung

              für alle die es noch interessiert:
              {
              static class Program
              {
              /// <summary>
              /// Der Haupteinstiegspunkt für die Anwendung.
              /// </summary>
              [STAThread]
              static void Main()
              {
              //Application.EnableVisualStyles();
              //Application.SetCompatibleTextRenderingDefault(fals e);
              //Application.Run(new Form1());
              bool ok;
              System.Threading.Mutex m = new System.Threading.Mutex(true, "Mutexname", out ok);

              if (! ok)
              {
              MessageBox.Show("Tool wurde bereits gestartet."); //nicht nötig
              return;
              }

              Application.Run(new Form1()); // or whatever was there

              GC.KeepAlive(m); // important!
              }
              }
              }

              Comment


              • #8
                GC.KeepAlive(m); // important!
                Warum? Einfach einen üblichen using Block für den Mutex zu verwenden scheint mir doch eher angeraten. Oder übersehe ich da was?

                Comment

                Working...
                X