5

我试图通过 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; }
}
4

0 回答 0