6 Stimmen

Wie können in .NET zwei Prozesse auf demselben Rechner am besten miteinander kommunizieren?

Was ist der beste (oder vielleicht nicht der beste - nur ein guter) Weg für zwei Prozesse auf demselben Rechner, um mit .NET zu kommunizieren?

Eigentlich sind die beiden Prozesse in der Anwendung, an der ich arbeite, nicht einmal zwei verschiedene Programme; sie sind nur zwei Instanzen derselben EXE. Ich wollte so etwas wie eine Singleton-App machen, aber pro Benutzer (d. h. ein Terminalserver oder Citrix- oder App-V-Server mit mehreren Benutzern sollte in der Lage sein, ihre eigene einzelne Kopie der App zu starten). Wenn eine andere Instanz vom selben Benutzer ausgeführt wird, sollte sie die Aufgabe einfach an die bereits laufende Instanz delegieren und sich dann beenden. Pro Benutzer sollte nur eine Instanz des Programms ausgeführt werden. Bisher habe ich (dank StackOverflow) den Teil, der erkennt, ob eine Instanz der App bereits ausgeführt wird, mit Mutex erledigt. Aber ich brauche die zweite App-Instanz, um Daten an die erste App-Instanz senden zu können.

Ich bin in Richtung der Verwendung von benannten Pipes und WCF NetNamedPipeBinding für diese lehnen, aber wenn Sie bessere Ideen haben, ich werde wirklich zu schätzen wissen. Danke :)

0voto

user57474 Punkte 523

Sie können den Geltungsbereich einer Mutex auf "session local" setzen, indem Sie ihrem Namen "Local\" voranstellen; lesen Sie MSDN für mehr. Auf diese Weise können Sie die Anzahl der Prozessinstanzen pro Terminalsitzung begrenzen (okay, das ist nicht genau das, was Sie wollten).

0 Stimmen

Danke, aber ich denke, das ist das Standardverhalten bereits. und ich bin in der Lage, den gegenseitigen Ausschluss ordnungsgemäß funktionieren; was ich wollte Meinungen über war die Interprozesskommunikation Teil.

-3voto

Stefan Punkte 11254

Eine andere Möglichkeit ist die Verwendung des guten alten DDE (Dynamic Data Exchange): http://www.codeplex.com/ndde

DDE baut auf Windows-Nachrichten auf, ist aber eine darüber liegende Abstraktionsschicht.

(Ja, ich mag meine Freunde WIN32-api) ;)

0 Stimmen

DDE ist nichts anderes als eine schicke Schicht über den Windows-Nachrichten. In dem von Ihnen angegebenen Link wird auch erwähnt, dass die dortige Bibliothek für die Verwendung mit Legacy-Anwendungen gedacht ist.

0 Stimmen

Genau wie ich geschrieben habe. Ich mag immer noch die Einfachheit. Nur ein paar APIs und Sie sind los.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X