gpt4 book ai didi

c# - WCF ConcurrencyMode Single 和 InstanceContextMode PerCall

转载 作者:IT王子 更新时间:2023-10-29 04:38:48 26 4
gpt4 key购买 nike

我的 wcf 服务配置有问题。我希望每次调用我的服务时都创建一个新的服务实例。对于并发性,我希望一个调用在另一个调用开始之前完成。

因此,如果我有这样的服务:

[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerCall)]
public class MyService: IMyService
{
public bool MyServiceOp()
{
Debug.WriteLine("thread "+
Thread.CurrentThread.ManagedThreadId.ToString());
Debug.WriteLine("start operation ");
Do_work()
Debug.WriteLine("end operation");
return true;
}
}

当我在一个循环中多次调用它时,跟踪给出:

thread 1
thread 2
start operation
start operation
end operation
end operation

虽然我想要这个:

thread 1 start operation end operation
thread 2 start operation end operation

这可能吗?谢谢

最佳答案

我知道这个问题被标记为已回答,但是有更好的选择:

如果您使用 InstanceContextMode.Single,那么您将对所有调用重复使用相同的实例。如果您的服务长时间运行,这需要您的代码完美地管理资源,因为如果不重新启动服务,它将永远不会被垃圾收集。

而是保留 InstanceContextMode.PerCall 以“每次调用我的服务都会创建一个新实例”,然后使用节流:设置 max concurrent instances到 1。 MSDN 文档正是将此作为示例之一。

关于c# - WCF ConcurrencyMode Single 和 InstanceContextMode PerCall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122608/

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