2010-07-21 10 views
5

Próbuję wysłać ciąg znaków przez nazwaną potok przy użyciu StreamWriter, ale klasa StreamWriter oferuje tylko operacje synchroniczne. Mogę użyć metody BeginWrite klasy NamedPipeServerStream, ale zastanawiam się, dlaczego nie ma klas pisarzy, które umożliwiłyby operacje asynchroniczne. Czy brakuje mi czegoś oczywistego?Używanie nazwanych potoków asynchronicznie z StreamWriter

+0

I wiem, że pytanie http://stackoverflow.com/questions/3015748/how-to-a-non-waiting-write-ona-a-named-pipe-c jest bardzo podobne, ale zastanawiam się, dlaczego klasy .NET Writera nie oferują tej funkcji. Czy brakuje mi jakiegoś oczywistego powodu? – Lenik

Odpowiedz

2

Byłoby to znacznie bardziej skomplikowane niż w przypadku nieprzetworzonych strumieni. W przypadku nieprzetworzonych strumieni każda ilość danych może być asynchroniczna, a system po prostu przekazuje Ci bufor. Czytnik wymaga kodowania znaków, które może przekształcić kilka bajtów nieprzetworzonych danych w jeden znak Unicode. Nie byłoby to niemożliwe, biblioteki szkieletowe nie wykorzystują go tak daleko, więc sam musisz to zrobić.

(W zależności od potrzeb, tworząc inny wątek i wykonując operacje synchronicznie na nim mogą łatwiej napisać swój program. Zauważ, że skalowalność byłaby ogólnie być wyższa, gdy używasz Begin/End asynchronicznie.)

Powiązane problemy