在 UI 线程上托管服务的深入解析
1. 服务主机与应用程序生命周期
当ServiceHost实例与应用程序的生命周期绑定,而非特定的窗体绑定时,可以挂钩Application对象的Exit事件。在应用程序运行时,还可以调用ServiceHost的Open()和Close()方法来启动和停止服务。若ServiceHost不在 UI 线程上运行,调用Close()方法会结束其初始化所在的线程,清理ServiceHost实例,使所有引用失效,后续若要接收请求,应用程序必须重新创建并打开ServiceHost。
2. 基于 Windows 窗体主机的实验
2.1 配置服务主机
以下是配置服务主机的步骤:
1. 打开启动解决方案<YourLearningWCFPath>\Labs\Chapter4\WindowsApplicationHost\WindowsApplicationHost.sln,该解决方案包含一个完整的服务以及服务主机和客户端应用程序的框架。
2. 修改WindowsHost项目以托管Messaging程序集中的MessagingService