gpt4 book ai didi

WCF InstanceContextMode.Multiple 问题

转载 作者:行者123 更新时间:2023-12-04 22:02:31 26 4
gpt4 key购买 nike

所以我在 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 调用测试服务时,Client2 不必等到第一次调用完成。但是,当 Client1 调用 TestIt 时,Client2 会阻塞,直到来自 Client1 的调用完成!?!?!不应该每次都根据上述设置创建一个新实例吗?

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

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

最佳答案

听起来你想设置这个

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

为假。默认情况下,如果在 service.Open() 发生时有同步上下文,WCF 会拾取并使用它。但是如果你不想要那个功能,这个标志是如何关闭它的。

关于WCF InstanceContextMode.Multiple 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com