Hallo,
für eine multiuser Anwendung möchte ich ein Ole-Objekt mehrfach erzeugen, so dass jeder Benutzer separat darin arbeiten kann.
Aktuell erzeuge ich das Ole-Objekt für jeden Benutzer in einem separaten Thread:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| unit MainUnit;
. . .
if assigned(MyThread[ConNr]) then MyThread[ConNr].Free; MyThread[ConNr] := TMyThread.Create; |
Quelle Thread:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| unit separaterThread;
...
type TMyThread = class(TThread)
...
constructor TMyThread.Create; begin inherited Create(false); FreeOnTerminate := true; CoInitializeEX(nil, COINIT_MULTITHREADED); MyOLEWin := CreateOLEObject('Something.Application'); MyOLEWin.Visible := form1.CheckBox1.Checked;
end; |
Soweit so gut..

.
Wenn nun ein weiterer Benutzer auf die Anwendung zu greift, wird das selbe OLE-Objekt noch einmal initialisiert. Die Ursache habe ich in der Hilfe von Delphi zum Thema "CreateOleObject" gefunden.
| Zitat: |
Hinweis: CreateOleObject wird einmal für jede neue Instanz einer Klasse aufgerufen. Um mehrere Instanzen einer Klasse zu erzeugen, verwenden Sie einen Klassengenerator.
|
Problem erkannt --> nun hängt es leider an der praktischen Umsetzung...
Was ist damit gemeint, "verwenden Sie einen Klassengenerator"?
Für einen kleinen Denkanstoß wäre ich dankbar.
Viele Grüße
Gunnar