Sha*_*air 6 .net wcf user-interface multithreading servicehost
我正在尝试配置一些WCF的东西.目前,我有一个允许远程用户下载文件的服务器和客户端.在服务器中,我使用ServiceHost类.我假设它应该在一个单独的线程上运行,但是,当有人下载文件时,服务器UI(WinForms)会被锁定.有没有办法管理WCF线程模型?
谢谢!
luk*_*san 11
您应该将ServiceBehaviorAtttribute添加到实现您的服务的类,并将其UseSynchronizationContext属性设置为false.这将导致在您自己的线程上处理对您的服务的调用.
例:
[ServiceBehavior(UseSynchronizationContext=false)]
class YourService : IYourService
{
// Service Methods
}
Run Code Online (Sandbox Code Playgroud)
请记住,如果要从服务方法中更新任何控件,则必须牢记Windows窗体的跨线程编程模型.
“在同一个 Windows 窗体应用程序中,如果您要在启动 UI 线程之前构造 ServiceHost 实例,它将在自己的线程上运行。这意味着从线程池分配的工作线程处理消息而不是消息循环。因此,服务可以真正处理多个并发请求。”
归档时间: |
|
查看次数: |
2418 次 |
最近记录: |