Hallo,
ich versuche mehrere Instanzen einer DLL mit einander komunizieren zu lassen.
Es soll aus mehreren Instanzen auf eine Generics.Collections.TList zugegriffen werden(kompliziert, weil willkürliche Speicherbelegung durch Objekte darin).
Der Hintergrund ist, dass bei der Initialisierung z.B. Ini-Files gelesen und Internetverbindung aufgebaut werden muss => lange Ladezeiten, Overhead blabliblubb.
Alternativ würde es auch helfen, wenn ich einen String an die erste geladene Instanz übergeben könnte, wenn die Dll eine zweites Mal geladen wird(oder ein Programm gestartet).
Bis jetzt habe ich folgende Ideen gesammelt, wie man das bewerkstelligen könnte:
1. Den aktuellen String in eine Datei schreiben; Der Haupt-Prozess muss dann regelmäßig darein gucken (Rödel)
2.
FILEMAPPING: den String in den Windows-Speicher schreiben, Prozess guckt regelmäßig.
(Größe, parallele Zugriffe, Speicherverwaltung?)
3. Dasselbe mit der ganzen Liste(unabsehbar viel Platz, Pointer-Probleme)
4. .NET/WMF? habe ich noch nicht ganz durchschaut und scheint auch nicht wirklich geeignet...
5. Pipes. Nur zu blöd, dass ich nicht weiß, wie ich eine frisch-aufgerufene Exe nachträglich
an meinen bereits bestehenden Prozess hänge, damit ich IO umleiten kann..
(PID in den gemeinsamen Speicher? Und weiter? Den bestehenden Prozess als Debugger setzen
und die neue Instanz kontrolliert "abschmieren" lassen?)
6. Umgekehrt: Die frisch gestartete Anwendung als Debugger an den Prozess hängen und den nachher wieder freigeben?
Das schönste wäre ja, wenn ich meine Methode in der fremden Instanz einfach irgendwie aufrufen könnte..
(Handle finden, sowie die addresse von der funktion und die parameter selbst in die register schieben..)
Oder gibt es etwas wie einen "überstatischen" variablentyp, der das für mich macht?(gabs da nicht sowas in java?)
Was kann ich tun, was macht sinn? vlt etwas neues? hier entstehen ja auch oft sehr gute Alternative Lösungen!
viele Grüße