J'ai l'erreur La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter. à System.Collections.Queue.QueueEnumerator.MoveNext()La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter
Queue ReqQ = (Application["ReqQ"] != null) ? ((Queue)Application["ReqQ"]) :
new Queue(50);
if (ReqQ != null)
{
foreach (object OReq in ReqQ)
{
string mId = (string)OReq;
if (mId.Split('~')[1].Equals(reqUid.Split('~')[1]) && (DateTime.Parse(mId.Split('~')[0]).AddMinutes(1 * int.Parse(string.IsNullOrEmpty(delay) ? "0" : delay)) > DateTime.Now))
{
isSuccess = false;
break;
}
}
}
else
{
ReqQ = new Queue(10);
isSuccess = true;
}
if (isSuccess)
{
if (ReqQ.Count >= 10) //only keep last 10 messages in application cache
ReqQ.Dequeue();
ReqQ.Enqueue(reqUid);
Application["ReqQ"] = ReqQ;
}
oui jon, il y a plusieurs demandes utilisez cette file d'attente à la fois. Cela n'arrive pas toujours. 2-3 fois par jour. Quel code devrais-je modifier pour cela? –
@cpsinghal: Soit utiliser le verrouillage ou une collection qui prend en charge l'accès simultané (tel que ConcurrentQueue) –