gpt4 book ai didi

.net - 静态方法/字段和 WCF

转载 作者:行者123 更新时间:2023-12-01 04:44:00 26 4
gpt4 key购买 nike

可以在 WCF 中安全地使用静态方法/类,因为 WCF 为每个用户创建一个新线程,所以如果我有一个静态变量

public static int = 5

如果两个客户同时尝试更改它,其中一个可以为另一个更改它吗?

谢谢...

最佳答案

任何人都可以修改静态字段,他们将看到根据线程和处理器调度设置的最新值。但是,为了安全实现,您应该再定义一个静态对象并将其用于锁定并通过静态属性提供对变量的访问。

private static object lockObject = new object();
private static int _MyValue = 0;
public static int MyStaticValue{
get{
int v = 0;
lock(lockObject){
v = _MyValue;
}
return v;
}
set{
lock(lockObject){
_MyValue = value;
}
}
}

这是线程安全的,并且只要 WCF 的服务主机保持进程处于事件状态,就可以为每个线程和每个实例共享。

在 IIS 或任何此类进程模型中,如果进程被回收,您将丢失最后一个静态值。

您应该使用某种服务器/应用程序级存储。例如HttpContext.Current.Server(对于 ASP.NET)。

关于.net - 静态方法/字段和 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601692/

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