Frage

Ich versuche, herauszufinden, wie man eine Klasse / Struktur / etc passieren .. Named Pipe zwischen Faden (Ich versuche, einige Performance mit der Stoppuhr zu messen und vergleichen Sie es mit anderen Methoden ..)

Wie auch immer, die ganze Dokumention ich gefunden habe, spricht über Stream mit und readline die Daten aus dem NamedPipeServerStream zu bekommen. Jedoch Readline- ist eine Zeichenfolge, wie eigentlich ich die Daten aus dem Named Pipes verwenden, wenn ich etwas vorbei, das nicht eine Zeichenfolge ist.

Danke, Eyal

War es hilfreich?

Lösung

NamedPipeServerStream ist ein Strom - so es ist in Ordnung für binäre Daten aus der Box. Nur behandelt es wie ein normaler Strom, anstatt es in einem StreamReader gewickelt wird.

Wie bei Objekten vorbei - warum Named Pipes verwendet, wenn Sie ausschließlich in einem einzigen Prozess sind? Erstellen Sie einfach einen speicherinternen Producer / Consumer-Warteschlange.

Andere Tipps

BinaryFormatter ist der einfachste Weg, um ein in und aus einem Rohr Strom zu serialisiert. Sie müssen die Klasse oder Struktur mit dem Attribut [Serializable] dekorieren.

ein Rohr Verwendung ist jedoch ein sehr ineffiziente Art und Weise zu "pass" Daten zwischen Threads. Jeder Thread in einem Prozeß Zugriff auf die gleichen Müllhaufen gesammelt hat, wird keine Serialisierung solange die Fäden laufen in der gleichen Anwendungsdomäne erforderlich. Sie tun müssen, synchronisieren den Zugriff auf das Objekt (e), verwenden Sie die lock-Anweisung. Die ConcurrentQueue Klasse macht es sehr einfach.

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