NamedPipeWrapper v1.5的问题-C#IPC-PushMessage行为异常

时间:2019-04-17 21:14:53

标签: c# wpf ipc named-pipes

在尝试完成两个进程之间的通信时,我遇到了NamedPipeWrapper V1.5(https://github.com/acdvorak/named-pipe-wrapper)问题。

已成功建立连接,但是在编译时实际的消息交换不起作用。

令人困惑的部分是,当我在Visual Studio中使用逐步调试时,会发送PushMessage。 当我简单地运行代码时,PushMessage函数不起作用,我无法理解原因。

我读到有关包括自定义消息类而不是对消息使用字符串的信息,并创建了应用于消息的可序列化类。可悲的是,这没有帮助。

相关服务器代码:

private readonly NamedPipeServer<Message> _server = new NamedPipeServer<Message>("SomePipeName");
private readonly ISet<string> _clients = new HashSet<string>();

public MainWindow()
{
   InitializeComponent();

  _server.ClientConnected += OnClientConnected;
            _server.ClientMessage += delegate (NamedPipeConnection<Message, Message> connection, Message message)
            {
                MessageBox.Show(message);
            };
 _server.Start();
}


private void OnClientConnected(NamedPipeConnection<Message, Message> connection)
        {
            _clients.Add(connection.Name);
            MessageBox.Show("This works! Connected"); //This part works fine
        }

相关客户代码:

public static readonly NamedPipeClient<Message> _client = new NamedPipeClient<Message>("SomePipe");

public static void Main(string[] args)
{
_client.Start();

_client.PushMessage(new Message() { Text = "hey there!" });

_client.WaitForDisconnection();
}

消息类别:

        [Serializable]
        public class Message
        {
            public string Text { get; set; }
        }

我在问题解决方案中添加了_client.WaitForDisconnection()部分,但没有任何区别。

欢迎任何想法! :)

(对不起,我的语法不好,请继续努力!:))

0 个答案:

没有答案