在尝试完成两个进程之间的通信时,我遇到了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()部分,但没有任何区别。
欢迎任何想法! :)
(对不起,我的语法不好,请继续努力!:))