У меня есть следующий код.
В Windows Server 2008 программа работает правильно и работает как положено. Выводит 10 разных идентификаторов.
Однако, когда я запускаю его в Windows Server 2003, программа работает неправильно. Он выводит 10 идентификаторов, но некоторые идентификаторы являются дубликатами. Кажется, что замок не работает.
Если я установил Thread.Sleep(500)
, он работает правильно на Windows Server 2003.
class Test
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Util.GetId());
}
Console.ReadLine();
}
}
public class Util
{
private static object idlock = new object();
public static string GetId()
{
string id = "";
lock (idlock)
{
Thread.Sleep(1);
id = System.DateTime.Now.ToString("yyMMddHHmmssffff");
}
return id;
}
}