Guten Morgen zusammen,
ich habe in diesem Code ein Problem
public delegate void AktualisiereZusammenstellungDelegate(List<SuperObjekt> Zusammenstellung);
public void AktualisiereZusammenstellung(List<SuperObjekt> Zusammenstellung)
{
if (InvokeRequired)
{
Invoke(new AktualisiereZusammenstellungDelegate(AktualisiereZusammenstellung), Zusammenstellung);
}
else
{
//GUI Aktion
}
}
im Invoke aufruf bekomme ich eine IndexOutOfRange Exception, muss ich die dann in dem Teil der Funktion suchen, die per invoke Aufgerufen wird? also hinter else, bzw. das wo ich dann hin springe? Das Problem taucht nur manchmal auf, aber die Liste bleibt die selbe.
Wie ich eine IndexOutOfRange Exception behandeln muss ist mir klar, nur nicht wo ich suchen muss, wenn der Fehler an dem Invoke aufruf kommt, da macht das Programm mit der Liste doch gar nichts.
Hallo,
mit
Invoke(new AktualisiereZusammenstellungDelegate(AktualisiereZusammenstellung), new object[] {Zusammenstellung});
sollte es gehen.
**:::
Ok, frage hat sich erledigt.
Wie schon fast vermutet leigt das Problem nicht in dem Aufruf des Invoke, sondern im Code, der danach abgearbeitet wird. Offensichtlich springt VS aber nach dem Verlassen des Threads aber nicht in die eigentliche Funktion um den Fehler kund zu tun, sondern meckert an der Stelle wo der Thread verlassen wird. Man muss also händisch gucken wo man überall was macht und dort durchsteppen, warum einfach wenns auch kopliziert geht.
Schade ist nur, dass man so, wenn man das verhalten nicht kennt ewig an der falschen Stelle sucht.