none
Fenster nur einmal öffnen RRS feed

  • Frage

  • Hallo,

    ich habe eine WindowsForms, welche über einen Link auf einer Webseite aufgerufen wird. Dahinter steckt eine XML-Datei mit der Dateiendung .preview. Sobald man darauf klickt öffnet sich die WindowsForm mit dem Inhalt der XML-Datei.

    Ich möchte nun bei einem Klick auf eine andere preview-Datei, dass diese die offene WindowsForm mit dem neuen Inhalt aktualisiert und anzeigt. Die WindowsForm darf aber nicht neu geöffnet werden, falls sie schon offen ist.

    Hoffentlich habe ich das Problem richtig beschrieben. Wie kann ich die Aufgabe angehen?

    LG

    Claudia

    Montag, 25. März 2013 11:13

Antworten

Alle Antworten

  • Hallo Claudia,

    es geht wohl weniger um das Fenster sondern eher um die Anwendungsintanz, oder? Falls ja, schau mal hier:

      http://stackoverflow.com/questions/93989/prevent-multiple-instances-of-a-given-app-in-net

    Eigentlich solltest Du in den Projekteinstellungen auch die im Posting erwähnte Checkbox "Einzelinstanzanwendung erstellen" haben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 25. März 2013 16:44
    Moderator
  • Hallo zusammen,

    Die Einstellung "Einzelinstanzanwendung erstellen" gibt es, soviel ich weiß, nur für Visual Basic-Projekte. Aber das, was sich dahinter verbirgt, kann man ohne große Mühe auch in C# erreichen. Beim Starten der Anwendung erstellt man ein systemweites EventWaitHandle und erfährt, ob das WaitHandle neu erstellt wurde oder - im Fall einer zweiten Instanz - im System bereits existierte. Wenn das EventWaitHandle bereits existierte, kann man über Remoting, Memory Mapped Files, oder Named Pipes mit der ersten Instanz kommunizieren und dort die gewünschte Logik ausführen. Entsprechende Berechtigungen vorausgesetzt.

    Gruß
    Marcel

    Montag, 25. März 2013 17:52
    Moderator
  • Besten Dank. Dein Link hat mir weitergeholfen. Ich bin dann auf diese Lösung gestoßen:

    http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

    LG

    Claudia

    Dienstag, 26. März 2013 09:35