我试图通过 C# 中的命名管道传递一个类对象。但是我得到一个错误“在解析完成之前遇到流结束”。这真的很令人沮丧,因为我已经设法毫无问题地发送字符串。有谁可以看到是什么问题?
客户端发送数据:
using(NamedPipeClientStream cs =
new NamedPipeClientStream("MyServer", "MyPipeName", PipeDirection.Out, PipeOptions.Asynchronous))
{
ObservableCollection<MyObject> messageToSend = new ObservableCollection<MyObject>(new MyObject() { MyProp1 = "Hello", MyProp2 = 7 });
IFormatter f = new BinaryFormatter();
foreach (var item in messageToSend)
{
f.Serialize(pipeStream, item);
}
}
服务器端接收数据:
NamedPipeServerStream ss = new NamedPipeServerStream("MyPipeName", PipeDirection.In);
ss.WaitForConnection();
IFormatter f = new BinaryFormatter();
MyObject messageReceived = (MyObject)f.Deserialize(cs);
此外,当我添加到接收器时,我遇到了另一个错误“流不支持搜索”。
ss.Position =0;
用作消息类型的类:
[Serializable]
public class MyObject
{
public string MyProp1 { get; set; }
public int MyProp2 { get; set; }
}