Hallo,
ich habe folgendes Problem. Mit Hilfe von dem COM/DCOM Buch vom Herrn Kosch, habe ich ein inProcess-server entwickelt.
Eine Funktion liest mir daten aus eine USB Schnitstelle.
nun mein Problem. Wenn ich mehrmal eine EXE starte die auf diese Funktion zugreift nimmt eine der anderen Daten weg...
Ich habe zwar criticalsections eingefügt, aber erfolg los.
Vermutlich liegt mein Fehler irgendwo anderst.
Hier mal der Quellcode..vielleicht seht ihr das Problem..
type
TMessages = class(TAutoObject, IMessages)
Protected
FbData0 : Byte;
procedure Initialize;override;
function lt_ReadQueuedMessage: OleVariant; safecall;
public
property bData0: OleVariant read Get_bData0 write Set_bData0;
Private
CritcalSection : TCriticalSection;
end;
implementation
uses ComServ;
Procedure TMessages.Initialize;
Begin
inherited initialize;
fbdata0 := 0;
CriticalSection := TCriticalSection.Create;
end;
function TMessages.lt_ReadQueuedMessage: OleVariant; safecall;
Begin
CriticalSection.Enter;
//Abschnitt wo die USB Schnitstelle gelesen wird.
...
...
CriticalSection.Leave;
end;
initialization
TAutoObjectFactory.Create(ComServer, TMessages, Class_Messages,
ciMultiInstance, tmApartment);
ich habe folgendes Problem. Mit Hilfe von dem COM/DCOM Buch vom Herrn Kosch, habe ich ein inProcess-server entwickelt.
Eine Funktion liest mir daten aus eine USB Schnitstelle.
nun mein Problem. Wenn ich mehrmal eine EXE starte die auf diese Funktion zugreift nimmt eine der anderen Daten weg...
Ich habe zwar criticalsections eingefügt, aber erfolg los.
Vermutlich liegt mein Fehler irgendwo anderst.
Hier mal der Quellcode..vielleicht seht ihr das Problem..
type
TMessages = class(TAutoObject, IMessages)
Protected
FbData0 : Byte;
procedure Initialize;override;
function lt_ReadQueuedMessage: OleVariant; safecall;
public
property bData0: OleVariant read Get_bData0 write Set_bData0;
Private
CritcalSection : TCriticalSection;
end;
implementation
uses ComServ;
Procedure TMessages.Initialize;
Begin
inherited initialize;
fbdata0 := 0;
CriticalSection := TCriticalSection.Create;
end;
function TMessages.lt_ReadQueuedMessage: OleVariant; safecall;
Begin
CriticalSection.Enter;
//Abschnitt wo die USB Schnitstelle gelesen wird.
...
...
CriticalSection.Leave;
end;
initialization
TAutoObjectFactory.Create(ComServer, TMessages, Class_Messages,
ciMultiInstance, tmApartment);