Beispiele von zeromq pub/sub mit C# winform
Ich versuche ein C# - Winform-Anwendung, die verwendet ZeroMQ (clrzmq .net-Bindungen (x86) via nuget) in einem pub/sub-Modell.
Nach viel suchen habe ich nur finden können standalone C# Beispiele, wo der code verwendet eine while-Anweisung zu verarbeiten, neue Nachrichten auf unbestimmte Zeit. Wenn ich versuche, um diese Beispiele zu verwenden, ich weiß nicht wohin mit dem code, und es blockiert die gui und alles andere.
Ich weiß nicht, ob es ist unmöglich zu tun, ohne einem anderen thread, aber ich hatte den Eindruck, dass ZeroMQ ist eine asynchrone Verhalten arbeiten könnte, ohne Codierung extra threads. Vielleicht habe ich einfach nicht weiß, wo der zeromq-code, oder vielleicht ich muss wirklich einen anderen thread.
Wenn jemand könnte ein einfaches pub/sub-Beispiel mit den Richtungen, wo Sie tatsächlich fügen Sie den code in ein Standard-C# - winform-Anwendung wäre es sehr geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass Sie die clrzmq ZeroMq-wrapper in Ihrem Projekt. Soweit ich weiß ist es nicht möglich, eine Nachricht erhalten, non-blocking in einer einfachen Schleife mit clrzmq, es wird blockiert, entweder auf unbestimmte Zeit, für eine bestimmte Zeit (durch Angabe eines timeout an die receive-Methode) oder bis Sie eine Nachricht erhalten.
Jedoch, es ist ziemlich trivial einzurichten, dass ein thread eine Umfrage der Steckdose regelmäßig und push werden eingehende Nachrichten auf eine
Queue
. Sie können dann zum Beispiel ein einfaches WinFormsTimer
regelmäßig dequeue ausstehende Nachrichten aus, die (gemeinsam)Queue
. Hier ist ein Beispiel für eine Singlethread-Abonnenten:Aus der
Form
Sie einfach eine Umfrage der Warteschlange periodisch (in diesem Beispiel verwendet eineForms Timer
und einfach fügt der message-Daten zu einemTextbox
):using ZeroMQ
, nicht ZMQ. Das Beispiel enthält einen link auf die clrzmq Projekt (Anfang des Beitrags). Ich bin nicht sicher, warum die Beispiele auf der Hauptseite sagt, ZMQ, ich denke, das ist die alte namespace-Namen. ZeroMq .NET-Beispiele verwendenusing ZeroMQ
.