当前位置:  开发笔记 > 编程语言 > 正文

WCF InstanceContextMode.Multiple问题

如何解决《WCFInstanceContextMode.Multiple问题》经验,为你挑选了1个好方法。

所以我在WinForms应用程序中托管WCF服务.我有以下内容

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, 
         InstanceContextMode = InstanceContextMode.PerCall)]
public class Test : ITest
{
    public string TestIt(string input)
    {
        Thread.Sleep(5000);
        return "test";
    }
}

我正在使用命名管道,并有两个另一个应用程序的实例作为上述WCF服务的客户端(在WinForms应用程序中运行).我认为基于Multiple的ConcurrencyMode设置,当Client1调用Test Service时,Client2不必等到第一个调用完成.但是,当Client1调用TestIt时,Client2会阻塞,直到来自Client1的调用完成!?!?!根据上述设置,它不应每次都创建一个新实例吗?

另外,保持托管WCF服务响应的WinForms应用程序的最佳方法是在单独的线程上运行WCF服务吗?

注意:在Test类上设置[CallbackBehavior(UseSynchronizationContext = false)]不会缓解此问题.该服务仍然一次只响应一个请求.



1> Brian..:

听起来你想要设置这个

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.usesynchronizationcontext.aspx

为假.默认情况下,如果在service.Open()发生时存在同步上下文,WCF将对其进行拾取并使用它.但是如果你不想要这个功能,这个标志就是关闭它的方法.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有