如果你想在一臺機器上遞增的數字,你可以使用這個類
public class IncrementalNumberGenerator
{
private readonly string _path;
private readonly EventWaitHandle _waitHandle;
public IncrementalNumberGenerator(string path)
{
_path = path;
_waitHandle = new EventWaitHandle(true, EventResetMode.AutoReset, Guid.NewGuid().ToString("N"));
if (!File.Exists(_path))
File.WriteAllText(_path,"0");
}
public ulong Next()
{
try
{
_waitHandle.WaitOne();
var currentValue = ulong.Parse(File.ReadAllText(_path));
File.WriteAllText(_path, (currentValue + 1).ToString());
return currentValue + 1;
}
finally
{
_waitHandle.Set();
}
}
}
這將使用名爲等待句柄到不同的線程和進程同步了。
使用它像
var ing = new IncrementalNumberGenerator(@"c:\data\temp\synch");
,並呼籲Next
當你需要新的號碼。通過使用這個類,即使您的應用程序有多個實例在運行,或者即使您的應用程序重新啓動,您也可以獲得增量編號。
我不明白。爲什麼不檢查'日期'是否小於'08-Jan-2014'? –
@SonerGönül:那個日期只是一個例子,我的錯誤。編輯 –
使用'DateTime.Now.Ticks'有什麼問題? – Niklas