DataTable-internen index beschädigt ist: '5'.verwendet in threading
Benutzt habe ich eine statische Globale Datenbestand von mehreren threads.
Habe ich die folgende exception :
Daten Tabelle interne index ist
beschädigt: '5'.
In threading, lese ich den Wert aus der Datentabelle & update(merge verwendet) der Wert in Datentabelle Betrieb getan threading.
könnte Sie post geben Sie den code bitte? und welche Zeile ist, die den Fehler generiert?
was .net framework verwenden Sie?
was .net framework verwenden Sie?
InformationsquelleAutor vrushali | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du tust Operationen auf einem Datensatz aus verschiedenen threads.
Dataset ist nicht thread-sicher, sollten Sie eine
wrapper class
schützt den Datenbestand von mehr als 1 Betrieb zu der Zeit. Dies nennt man einen mutex erzeugt:link zu microsoft msdn
Eine bessere Lösung ist, keine Verwendung von globalen Zustand. Dies wird Ihr problem lösen, ohne extra Arbeit und macht den code wesentlich zuverlässiger.
InformationsquelleAutor Peter
Wenn Sie sind unter Verwendung von Fäden mit einem Datensatz, wird dieser Fehler auftreten.
In meinem Fall, ich habe versucht, erstellen Sie eine neue Zeile für einen Datensatz innerhalb einer Methode ausgeführt wurde, in threads.
Einer Weise zu nutzen, um die SyncLock um die Methode erzeugt die Zeile oder die andere Möglichkeit (und wahrscheinlich sogar besser) war, die Zeilen außerhalb des threads.
Im Grunde ist mein code sieht ungefähr so aus:
In der CreateElementRow Methode, die ich mache eine Menge von Berechnungen in threads.
Hoffe, das hilft.
InformationsquelleAutor mrc
Gut, Da Sie mit Ihrem dataTable in mehreren threads, es gibt eine hohe Wahrscheinlichkeit von Korruption-wenn Sie so manipulieren, dass das Objekt aus verschiedenen threads.
Einige Hinweise, um Ihnen zu helfen, das Problem zu lösen :
ändern der Standard-Ansicht, wenn
möglich. Btw .Net 2.0 hat eine Reihe
der reader/writer-locks auf erstellen
Ansichten, Sie sind also nicht das Problem Sie
waren pre 2.0.
da es keine reader/writer-lock
in diesem code-und es ist nur
Platz (zumindest nach einer person
auf dem usenet so nehmen Sie w/ein Korn
Salz -- allerdings ist dies sehr
ähnlich zu Ihrem Thema -- also mit
Mutexe können helfen)
Frage (zweifelhaftem Wert, aber
berichtet über die usenet-ich verwendet habe
es nur dort, wo es macht
Sinn)
null (C#)/Nichts (VB) zu einer DataRow
Feld. Verwenden Sie DBNull.Wert statt
null. In Ihrem Fall möchten Sie vielleicht
überprüfen Sie, dass das Feld nicht null ist, die
expression-syntax wird unterstützt, die
IsNull(val, alt_val) - operator.
(absurd, wie es klingt): Wenn ein Wert
nicht zu ändern, weisen Sie nicht. Zum Beispiel, wenn Sie wollen, um einen Wert zuweisen zu einige die Spalte es tun, wie :
Antwort Quelle : StackOverflow - DataTable-internen index ist beschädigt
InformationsquelleAutor ta-run
Kann Sie mit der gleichen Datentabelle in mehrere Prozess - @ gleichen Zeit.. nur ich dieses Problem gelöst, Probleme mit SYNCLOCK..
versuchen Sie, diese..
Bitte lassen Sie mich wissen, ob dies hilfreich für Sie..
Happy coding..
InformationsquelleAutor URVISH SUTHAR
Dies ist, wie ich meine Feste Interne index ist beschädigt problem:
InformationsquelleAutor Andrew Marais
Um zu verhindern, dass die Ausführung in mehreren threads die ich verwendet habe :
InformationsquelleAutor Allie
dieser wird das Problem beheben
InformationsquelleAutor Ala'a Hamad