Diskussion:Überprüfung auf mehrere Instanzen eines Spiels
Inhaltsverzeichnis |
Fehlende Erklärung
Meiner Meinung nach reicht ein Codeschnipsel nicht einfach aus. Man sollte noch erklären, warum der Code macht was er macht, und könnte dann generell noch kurz was zu Mutex sagen. (unsignierter Beitrag von Schorsch)
- Dem muss ich zustimmen, Auch mir ist bereits dieser Gedanke gekommen. Es könnten auch andere Vorgehensweisen beschrieben werden, die auch von anderen Programmiersprachen genutzt werden können. Spontan würden mir Lock-Dateien einfallen, die beim Start angelegt und beim beenden gelöscht werden. Um zu vermeiden, dass eine vorhandene Lock-Datei ohne laufendes Spiel den Start des Spiels stört, müsste mit der Lock-Datei festgehalten werden, wie lange diese gültig ist und während der Laufzeit des Spiels dieser Wert permanent aktualisiert werden.
- @Schorsch: Bitte signiere deine weiteren Diskussionsbeiträge mit
--~~~~
. - --Sacaldur 15:48, 12. Dez. 2011 (CET)
Kategorisierung
Von den bisher vorhandenen Kategorien würde dieser Artikel am ehesten (zusätzlich zu C++) in Polishing oder Spiellogik passen. Allerdings habe ich diesen Artikel noch nicht in einen der beiden Kategorien eingeordnet, da meiner Meinung nach beide nicht passend genug sind. Sollte jemand eine Kategorie passend finden, kann er diesen Artikel gerne dieser hinzufügen. --Sacaldur 15:25, 12. Dez. 2011 (CET)
Andere Programmiersprachen
Bisher wurde nur die Vorgehensweise für (ausschließlich) C++ beschrieben. Es sollten Möglichkeiten erwähnt werden, wie eine solche Überprüfung auch in anderen Programmiersprachen gehandhabt werden kann. --Sacaldur 15:28, 12. Dez. 2011 (CET)
Code tut nicht das, was er soll
Der Code ist etwas seltsam:
- Der Mutex wird nie benutzt oder abgefragt, ob er erzeugt werden konnte.
- Fehlende Erklärung, was der Parameter "name" sein soll.
- Fehlende Erklärung, wo dieser Code hin soll.
- Der Code funktioniert erst ab dem Zeitpunkt, wo es ein Fenster gibt. Weiter oben wurde jedoch gesagt, dass die Gefahr insbesondere dann hoch ist, wenn das Programm noch kein Fenster erzeugt hat und der Benutzer denkt, dass es nicht läuft. Also funktioniert dieser Code dann gar nicht.
- Verbesserungsvorschlag: Kein "name", sondern als Namen für Mutex einfach den Namen der ausführbaren Datei (
GetModuleHandle(0)
) nehmen. Checken, ob Mutex erzeugt wurde. Wenn nicht: rausfinden, welcher Prozess den Mutex besitzt und dessen primäres Fenster in den Vordergrund bringen. Sollte ganz ohne Parameter klappen!
--David Scherfgen 12:32, 13. Dez. 2011 (CET)
Simon: Ich habe den Code mal überarbeitet, da er nicht funktionsfähig war, so wie er da stand. GetModuleHandle(0) gibt ein Handle, wie es der Funktionsname bereits sagt, und nicht den Pfad. Des Weiteren prüft man nicht ob das zurückgegebene Mutex Handle == ERROR_ALREADY_EXISTS ist, sondern ob dies der letzte Fehler ist.