Ваш код не является потокобезопасным, поскольку присвоение DateTime
не гарантированно является атомарным.В общем случае целые числа до 32 битов являются атомарными, но 64 не обязательно должны быть атомарными.
Вы, вероятно, можете использовать Interlocked.Exchange
с галочками DateTime
, поскольку это может атомарно хранить Int64.
Но если вы переключаетесь на тики, вы должны знать, что только 62 бита используются для тиков, и 2 бита для вида.Таким образом, вы не потеряете вид.
И даже если вы сделаете метод получения и установки атомарным потокобезопасным, я не уверен, достаточно ли этого.Поскольку время может меняться между временем возвращения вашего геттера и временем, которое вы фактически работаете с временем, которое у вас есть.Так что ваше время всегда может быть устаревшим.