2012-09-28 15 views
25

würde mich wirklich zu schätzen jemand mir helfen, das folgende Problem zu lösen:StringBuilder.ToString() ‚außerhalb des zulässigen Bereichs Index‘ eine Exception werfen

Ich bin immer von Zeit zu Zeit der folgenden Ausnahme:

Index war außer Reichweite. Muss nicht negativ sein und weniger als die Größe der Sammlung. Parametername: chunkLength

unter stringBuilder.ToString().

Was seltsam ist, wenn ich stringBuilder.ToString() in die Uhr setzen, funktioniert es perfekt.

+10

Ist es möglich, dass Ihr StringBuilder auch von einem anderen Thread verwendet wird? –

+1

Können Sie das Snippit angeben, das die Ausnahme verursacht, einschließlich der Erstellung des String-Builders? – deepee1

+0

Die stringBuilder.AppendLine wird für Ereignisse aufgerufen. Es wird dann auf dem Bildschirm auf einem anderen Thread angezeigt. –

Antwort

27

Sieht aus wie es ein Multi-Thread-Problem ist. Ich habe den Thread gesperrt, um Mehrfachzugriff auf den stringBuilder zur gleichen Zeit zu verhindern.

public void AddString(string s) 
{ 
    lock(this.LockObject) 
    { 
    StringBuilder.AppendLine(s); 
    } 
} 
Verwandte Themen