我在C#中都有WPF和Winform应用程序。我通过使用
从winform应用程序调用wpf应用程序ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\wpfapp.exe";
startInfo.Arguments = data; //string result data from webservice;
Process.Start(startInfo);
这没关系,我能够使用已作为参数发送的参数从winform运行wpf ui。但是现在我有一个问题。现在我想在正在运行的wpf窗口中更新消息。
已经运行了wpf窗口并显示了消息。稍后我想向同一WPF窗口发送另一条消息。 我们如何实现这一目标?
if (ProgramIsRunning(exepath))
{
// here we need to add the code to send message to the same wpf window.
}
else
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\wpfapp.exe";
startInfo.Arguments = data; // string result data from webservice;
Process.Start(startInfo);
}
请帮助。
答案 0 :(得分:0)
如果您不喜欢本post中所述的管道,则可以在WPF应用中使用Nancy托管简单的REST服务器,并使用HttpClient或{{3} }与之通信。
示例消息侦听器应用程序:
class Program {
static void Main(string[] args) {
var baseUri = new Uri("http://localhost:1234");
var nancyHost = new NancyHost(baseUri);
nancyHost.Start();
Thread.Sleep(-1);
}
}
public class SimpleRestModule : NancyModule {
public SimpleRestModule() {
Get["/Message"] = (args) => {
return "Hello from server";
};
Post["/Message"] = (args) => {
var receivedMessage = Request.Body.AsString();
return "Message received";
};
}
}
示例邮件发送者应用程序:
class Program {
static void Main(string[] args) {
var httpClient = new HttpClient();
var response = httpClient.PostAsync("http://localhost:1234/Message", new StringContent("Test message")).Result;
}
}