.NET ConcurrentQueue
ve BlockingCollection
arasındaki farklar nelerdir?.Net'de ConcurrentQueue ve BlockingCollection arasındaki farklar nelerdir?
BlockingCollection
üretici-tüketici işlemi için en iyisi ConcurrentQueue
yoluyla yapılabilir Neden? Aşağıdaki kodda herhangi bir şeyi geliştirmek zorunda mıyım?
MessageSlotMachineGameStartOrAndStatusUpdate msg;
while (!aCancellationToken.IsCancellationRequested)
{
try
{
this.isStillConsumingMsg = true;
Boolean takeResult = this.msgQueue.TryTake(out msg, this.msgConsumeTimeOut, aCancellationToken);
if (takeResult)
{
if (msg != null)
{
this.ProcessMessage(msg);
}
}
else
{
break;
}
}
catch (OperationCanceledException err)
{
EngineManager.AddExceptionLog(err, "Signal Operation Canceled");
}
catch (Exception err)
{
EngineManager.AddExceptionLog(err, "Signal exception");
}
finally
{
this.isStillConsumingMsg = false;
}
}
Bana bildirim yapılabilir nasıl örnek verebiliriz. –
Bir [ 'AutoResetEvent'] (http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx) kullanabilir @WAPGuy. Bağlantıyı takip edin ve nasıl kullanıldığına dair bir örnek için aşağı kaydırın. – dasblinkenlight
Tamam, WaitHandle'ye sinyal gönderdiğinde? Boş olduğunda veya Take yönteminde bir zaman aşımı sonrasında mı? –