Ну, любой может изменить статическое поле, и он увидит последнее установленное значение в зависимости от планирования потока и процессора. Однако для безопасной реализации вы должны определить еще один статический объект и использовать его для блокировки и предоставить свой доступ к переменной через статическое свойство.
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;
}
}
}
Это поточно-ориентированный, а также общий для всех потоков и каждого экземпляра, пока Service Host WCF поддерживает процесс живым.
В IIS или любой такой модели процесса, если процесс будет переработан, вы потеряете последнее статическое значение.
Вы должны использовать какое-то хранилище уровня сервера / приложения. например HttpContext.Current.Server (в случае ASP.NET).