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