Beispiele für zeromq pub / sub mit C # winform

8

Ich versuche, eine C # Winform-Anwendung zu erstellen, die ZeroMQ (clrzmq .net-Bindungen (x86) via nuget) in einem Pub / Sub-Modell verwendet.

Nach vielen Suchen kann ich nur Standalone-C # -Beispiele finden, in denen der Code eine while-Anweisung verwendet, um neue Nachrichten unbegrenzt zu verarbeiten. Wenn ich versuche, diese Beispiele zu verwenden, weiß ich nicht, wohin ich den Code setzen soll, und er blockiert nur die GUI und alles andere.

Ich weiß nicht, ob es unmöglich ist, ohne einen anderen Thread zu arbeiten, aber ich hatte den Eindruck, dass das asynchrone Verhalten von ZeroMQ ohne zusätzliche Threads funktionieren könnte. Vielleicht weiß ich nicht, wo ich den zeromq-Code einfügen soll, oder vielleicht brauche ich wirklich einen anderen Thread.

Wenn jemand ein einfaches Pub / Sub-Beispiel mit einer Wegbeschreibung zur Verfügung stellen könnte, wo der Code tatsächlich in eine standardmäßige C # -Winform-Anwendung eingefügt werden soll, wäre dies sehr zu begrüßen.

    
uberdanzik 10.02.2013, 03:27
quelle

1 Antwort

7

Ich gehe davon aus, dass Sie den clrzmq ZeroMq-Wrapper in Ihrem Projekt verwenden. Soweit ich weiß, ist es nicht möglich, blockierende Nachrichten in einer einfachen Schleife mit clrzmq zu empfangen, es wird entweder unbegrenzt für eine bestimmte Zeit blockiert (durch Angabe eines Timeouts für die Empfangsmethode) oder bis Sie eine Nachricht erhalten .

Es ist jedoch ziemlich trivial, einen Thread einzurichten, um den Socket regelmäßig abzufragen und eingehende Nachrichten auf ein Queue zu schieben. Sie können dann zum Beispiel eine einfache WinForms Timer verwenden, um alle anstehenden Nachrichten von dieser (gemeinsam genutzten) Queue periodisch zu entfernen. Hier ist ein Arbeitsbeispiel für einen Thread-Abonnenten:

%Vor%

Von Form wird die Warteschlange regelmäßig abgefragt (in diesem Beispiel wird Forms Timer verwendet und die Nachrichtendaten einfach an Textbox angehängt):

%Vor%     
Jakob Möllås 10.02.2013, 11:56
quelle

Tags und Links