J'ai le code ci-dessous:C# méthode n'est pas en cours d'exécution séquentielle
public Dictionary<int, Ticket> GetNewTickets()
{
Dictionary<int, Ticket> output = new Dictionary<int, Ticket>();
foreach (KeyValuePair<int, Ticket> item in ticketStore)
{
if (!ticketStoreNew.ContainsKey(item.Key))
{
output.Add(item.Key, item.Value);
}
}
ticketStoreNew = ticketStore;
return output;
}`
Il faut un dictionnaire, ticketStore
, vérifie si elle a des éléments nouveaux ne sont pas en ticketStoreNew et les met dans le dictionnaire de sortie. Ensuite, ticketStoreNew est défini sur ticketStore jusqu'à ce que ticketStore soit mis à jour avec une autre méthode et que cette méthode soit réexécutée.
Toutefois, lorsque j'inclut la ligne ticketStoreNew = ticketStore
, le programme renvoie un dictionnaire vide. Il semble que la méthode ne s'exécute pas séquentiellement et qu'elle s'exécute avant la boucle for.
J'ai juste besoin de retourner tout nouvel élément ajouté au dictionnaire ticketStore
.
EDIT Voici le code pour obtenir ticketStore
:
public void UpdateTickets(string inputXml)
{
// If no new tickets exit
if (inputXml.Trim() == "") { return; }
//xmlString = inputXml;
// Load XML into an enumerable
XElement xelement = XElement.Parse(inputXml);
IEnumerable<XElement> xml = xelement.Elements();
foreach (var item in xml)
{
if (item.Name == "incident")
{
int id;
// If ID can be converted to INT
if (Int32.TryParse(item.Element("id").Value, out id))
{
// If ticket is not already in store create ticket and populate data
if (!ticketStore.ContainsKey(id))
{
Ticket ticket = new Ticket();
ticket.id = id;
ticket.number = Int32.Parse(item.Element("number").Value);
ticket.title = item.Element("name").Value;
ticket.description = item.Element("description").Value;
ticketStore.Add(id, ticket);
}
}
}
}
}
}
Les billets sont tous basés sur l'obtention XML de l'API SAManage.
S'il vous plaît inclure la méthode qui met à jour ticketStore car cela serait pertinent ici. –
J'ai modifié le message d'origine pour inclure la méthode de mise à jour. Le magasin de tickets et ses articles de ticket sont tous générés à partir d'un code XML extrait d'un appel d'API. –
mike z: J'ai essayé de remplacer 'ticketStoreNew = ticketStore' avec votre code, mais il fait la même chose. Il renvoie un dictionnaire vide, mais lorsque la ligne est mise en commentaire, elle renvoie certains éléments. –