2010-07-21 28 views
5

Tôi đang cố gắng gửi một chuỗi qua một đường ống có tên bằng cách sử dụng StreamWriter, nhưng lớp StreamWriter chỉ cung cấp các hoạt động đồng bộ. Tôi có thể sử dụng phương thức BeginWrite của lớp NamedPipeServerStream, nhưng tôi tự hỏi tại sao không có lớp nhà văn nào cho phép các hoạt động không đồng bộ. Tôi có thiếu một cái gì đó hiển nhiên?Sử dụng các đường ống được đặt tên không đồng bộ với StreamWriter

+0

tôi biết rằng http://stackoverflow.com/questions/3015748/how-to-do-a-non-waiting-write-on-a-named-pipe-c câu hỏi là rất giống nhau, nhưng tôi tự hỏi tại sao. không cung cấp chức năng này. Tôi có thiếu một số điểm rõ ràng? – Lenik

Trả lời

2

Điều này sẽ phức tạp hơn đáng kể so với luồng thô. Đối với các luồng thô, bất kỳ lượng dữ liệu nào có thể đến không đồng bộ và hệ thống chỉ chuyển bộ đệm cho bạn. Người đọc yêu cầu mã hóa ký tự có thể biến vài byte dữ liệu thô thành một ký tự Unicode duy nhất. Không phải là điều này sẽ là không thể, các thư viện khung công tác không mang nó đến mức xa, do đó bạn sẽ cần tự mình làm công việc này.

(Tùy thuộc vào nhu cầu của bạn, tạo ra thread khác và thực hiện các hoạt động đồng thời trên nó có thể làm cho nó dễ dàng hơn để viết chương trình của bạn. Lưu ý khả năng mở rộng đó sẽ là thường cao hơn khi bạn sử dụng Begin/End async.)

Các vấn đề liên quan