次の方法は、一度に 1 つのスレッドだけが ID を読み取ることができるようにしますか? 次のメソッドを使用する並列プロセスがあり、一意の ID を返す必要があります。残念ながら、ID の構造を変更することはできません。
private static int Seq = 0;
private static long dtDiff = 0;
private static object thisLock = new object();
private static object BuildClientID(string Code)
{
lock (thisLock)
{
object sReturn = "";
Seq++;
dtDiff++;
if (Seq == 1000)
{
Seq = 0;
dtDiff = DateAndTime.DateDiff(DateInterval.Second, DateTime.Parse("1970-01-01"), DateTime.Now);
}
sReturn = dtDiff.ToString() + Code + Seq.ToString("000");
return sReturn;
}
}