Ich habe einen COM-EXE-Out-of-proc-Server, der eine API von einer seiner Schnittstellen aus verfügbar macht. Die Funktionalität dieser API besteht darin, URLs zu posten.Benötige ich eine Jobwarteschlange auf meinem COM-Server?
Mein Client erstellt die Instanz des COM-Servers und ruft diese API mit neuen URLs auf.
Jedes Mal, wenn der Client eine URL veröffentlichen muss, wird eine Instanz dieses COM-Servers erstellt.
Muss ich eine Warteschlange im COM-Server implementieren, um alle vom Client veröffentlichten URLs zu verfolgen und sicherzustellen, dass nichts verloren geht?
Was ich frage mich ist, wenn jedes Mal, wenn ich ein COM-Objekt erstellen, ein neuer Prozess gestartet wird? Wenn das der Fall ist, denke ich, dass ich keine Jobwarteschlange im Server implementieren muss.
Wenn jedoch nur eine Instanz im Speicher verbleibt, ist es möglich, dass die vom Client veröffentlichten Jobs/URLs verloren gehen.
Okay, mein COM-Server ist single-threaded. Kann ich mehrere Anfragen an COM-Server stellen? Ich möchte auch, dass der COM-Server die Anfrage entgegennimmt und sofort zurückkehrt. Es sieht so aus, als müsste ich einen zweiten Thread im COM-Server implementieren, der sich um URLs kümmert. – anand
Wenn es sich bei der Komponente um STA handelt, können Sie mehrere Anforderungen posten. Wenn jedoch eine Anforderung ausgeführt wird, werden alle nachfolgenden Anforderungen stillschweigend ausgesetzt, bis die erste Anforderung zurückgegeben und anschließend eine der ausstehenden Anforderungen wiederaufgenommen wird. Dies wird automatisch von COM durchgeführt, um die Beschädigung von gemeinsam genutzten Variablen zu verhindern. Sie können beliebig viele Threads spawnen, aber dann müssen Sie sich um die Synchronisation kümmern. – sharptooth