我一直在寻找一段时间来回答我的问题,但到目前为止还没有找到可靠的链接。我要做的是:我已经构建了一个Windows .NET GUI应用程序。我希望能够通过Web服务访问表单控件的功能。关于如何做到这一点有什么好的联系吗?
感谢您的帮助。
答案 0 :(得分:0)
您可以在WinForms应用程序中轻松托管Windows Communication Foundation Web服务。请参阅How to Host a WCF Service in a Managed Application上的MSDN文章。
请注意,如果您希望服务操作与UI控件交互(我假设这是在应用程序中使用服务的目的 - 否则最好创建一个普通的非可视服务并在IIS中托管它或Windows服务)然后您将需要使用Control.Invoke或Control.BeginInvoke,因为服务操作在后台线程上运行。
答案 1 :(得分:0)
这是从Winforms应用程序托管服务的一个很好的例子。
http://www.codeproject.com/KB/WCF/WCFexample.aspx
您也可以在主方法中执行类似这样的操作:
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
ServiceHost host = new ServiceHost(typeof(TestService));
NetNamedPipeBinding namedPipe = new NetNamedPipeBinding();
host.AddServiceEndpoint(typeof(ITest), namedPipe, "net.pipe://localhost/test");
host.Open();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new AutoDeployApp());
}
然后,在服务中使用这种类型的东西来获取运行形式:
MyForm form = Application.OpenForms["MyForm"] as MyForm ;