C# 4.0 从ConcurrentQueue获取GUID

C# 4.0 从ConcurrentQueue获取GUID,c#-4.0,C# 4.0,我正在尝试从队列中获取GUID的值,但未获取正确的值。 我能知道我错在哪里吗 var gid=Guid.NewGuid(); Guid value ; var queue1 = new ConcurrentQueue<Guid>(); queue1.Enqueue(gid); while(queue1.TryDequeue(out value)); var gid=Guid.NewGuid(); Guid值; var queue1=新的ConcurrentQueue(); 排队1

我正在尝试从队列中获取GUID的值,但未获取正确的值。 我能知道我错在哪里吗

var gid=Guid.NewGuid();
Guid  value ;
var queue1 = new ConcurrentQueue<Guid>();
queue1.Enqueue(gid);
while(queue1.TryDequeue(out value));
var gid=Guid.NewGuid();
Guid值;
var queue1=新的ConcurrentQueue();
排队1.排队(gid);
while(queue1.TryDequeue(out值));
将始终写入
Guid
,因为它是一个
out
参数

第二次通过while循环时,它清除该值

发生的情况是,第一次点击while语句时,出列操作成功。然后它再次尝试退出队列,但失败(因为只有一个元素),并将输出(
)设置为
默认(Guid)

如果执行以下操作,您将看到两个值相同:

var gid=Guid.NewGuid();
Guid value ;
var queue1 = new ConcurrentQueue<Guid>();
queue1.Enqueue(gid);
if(queue1.TryDequeue(out value))
{
    Console.WriteLine("gid==value: {0}", gid == value);
}
else
    Console.WriteLine("Failed to dequeue");
var gid=Guid.NewGuid();
Guid值;
var queue1=新的ConcurrentQueue();
排队1.排队(gid);
if(queue1.TryDequeue(out值))
{
WriteLine(“gid==value:{0}”,gid==value);
}
其他的
Console.WriteLine(“无法退出队列”);