我试图通过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);
此外,当我添加到接收器时,我还有另一个错误“Stream不支持搜索”。
ss.Position =0;
用作消息类型的类:
[Serializable]
public class MyObject
{
public string MyProp1 { get; set; }
public int MyProp2 { get; set; }
}