2011-05-30 51 views

回答

3

是否有可能在WPF应用程序

一个WCF监听器/服务。它是相当简单的你想要的任何地方创建一个WCF服务监听器/服务器。

var servicehost = new ServiceHost(typeof(SomeService)) 
servicehost.Open(); 

一个问题是,您必须拥有足够的权限才能显示主机。您可能必须提升您的应用程序,并且肯定必须确保防火墙(软件/硬件)允许流量到达它。

此链接似乎涵盖了WCF MSDN样的网络设置,都适用于IIS托管,以及你的情况下,非IIS托管WCF:

http://msdn.microsoft.com/en-us/library/ms751527(v=vs.90).aspx

此外,你可能会碰到线程复杂化,尽管在任何情况下您都会遇到这些问题,因为您尝试从后台线程更新UI。如果您有问题,这一点,看看在Dispatcher

http://msdn.microsoft.com/en-us/magazine/cc163328.aspx

之后,它是由你来创建一个客户机/服务器设计,可确保在创建服务,并在正确的时间听, (ServiceHostIDisposable),并且它正确地处理状态(如果操作在你不期望的时候被调用 - 在任何软件中总会有错误)。

然后再调用这个服务在WPF应用程序

WPF打开屏幕创建代码,您可以调用或多或少你的WinForms会以同样的方式。例如,您仍然可以拨打new MainWindow().Show()电话。所以只需将这些代码添加到您的服务实现中。

1

是的,你可以在WinForms和WFP应用程序中托管WCF服务 - MSDN contains some sample。取决于你如何托管服务,你必须以不同的方式处理UI交互 - 在UI和其他线程之间进行托管是有区别的,因为其他线程无法直接访问UI控件。

相关问题