我有以下代码。在 windows server 2008 中,该程序是正确的并且可以按预期运行。它输出 10 个不同的 id。
但是,当我在 windows server 2003 中运行它时,程序不正确。它输出 10 个 id,但其中一些 id 是重复的。看来锁不工作了。
如果我设置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;
}
}