Frage

Ich verstehe nicht, wo das schief geht. Grundsätzlich habe ich ein Programm, das von einer Nachrichtenwarteschlange erhält und die Nachrichten verarbeitet. Das Programm kann jederzeit angehalten werden, in diesem Fall, in dem der Nachrichtenschleifen beendet hat, was er leistet, bevor das Programm ausgeht. Ich versuche dies mit dem folgenden Code zu erreichen: generasacodicetagpre.

Wie hoffentlich ersichtlich ist, speist das Stopp-Verfahren die Meldungswarteschlange ab und wartet dann auf den Leerlauf-Warteriff, der eingestellt ist (was als ein bestimmungsbedingtes Ereignis auftreten sollte, wenn es bei der Entsorgung aufgerufen wird, aber die E.MESSAGE-Eigenschaft sollte außer ).

Der Nachrichtenschleife ist jedoch weiterhin weiter! Ich habe die Nachrichtenwarteschlange veräußert, aber es schafft es immer noch, daraus zu lesen, und der Ausnahmehandler wird nicht aufgerufen, dh der Leerlauf. Wait-Linie wartet für immer.

Mein Verständnis ist, dass die Entsorgung einer Meldungswarteschlange alle anstehenden Empfangen enden und das Ereignis aufrufen, aber die E.MESSAGE (oder Q.ENDRECEIVEIVE) sollte eine Ausnahme werfen. Ist das nicht der Fall? Wenn nicht, wie kann ich sonst meine Nachrichtenschleife sicher verlassen?

danke

update:

Hier ist ein komplettes Beispiel (nimmt an, dass die Warteschlange vorhanden ist) generasacodicetagpre.

War es hilfreich?

Lösung 2

Der einzige Weg, wie ich diese Arbeit mit einer transaktionellen Warteschlange erhalten konnte.Jede Nicht-Transaktionswarteschlange scheint dabei anfällig zu sein.Keine Antwort, aber der beste Rat, aber ich kann jedem geben, der dies finden kann.

Andere Tipps

Nicht ganz sicher, wie Sie diese Arbeit überhaupt gemacht haben.Sie müssen call messageQueue.endReceive () in der Veranstaltung anrufen.Nur diese Methode kann die Ausnahme werfen.Überprüfen Sie den MSDN-Beispielcode für das vorbehaltlose Ereignis.Und nehmen Sie keine Ausnahme, dass nur ein unstimmiges Versagen verursacht.Fangen Sie die spezifische Ausnahme, die Sie erhalten, wenn Sie die Warteschlange, objectDindeDexception entsorgen.

generasacodicetagpre.

... generasacodicetagpre.

... generasacodicetagpre.

...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top