我有一个C#应用程序,为每个插入到表中的行生成连续的GUID。我期望插入的GUID是连续的,但有时会出现序列中断的情况(以块为单位)。
例如:
这些GUID按照插入的顺序显示。为什么这些“连续的”GUID会有如此大的序列间隔而被创建?
生成顺序 GUID 的代码:
class NativeMethods
{
[DllImport("rpcrt4.dll", SetLastError = true)]
public static extern int UuidCreateSequential(out Guid guid);
}
public static Guid CreateSequentialGuid()
{
const int RPC_S_OK = 0;
Guid guid;
int result = NativeMethods.UuidCreateSequential(out guid);
if (result == RPC_S_OK)
return guid;
else
return Guid.NewGuid(); //<--In debugging, this statement never runs.
}
用于循环插入新GUID和信息到表中的代码:
Guid mySequentialGUID = CreateSequentialGuid();
string[] row = { item1,
item2,
item3,
sourceText,
encoding.ToString(),
mySequentialGUID.ToString()
};
var listViewItem = new ListViewItem(row);
myListView.Items.Add(listViewItem);
编辑:
请查看此问题以了解顺序 GUID: