2012-09-28 3 views
25

Vorrei davvero apprezzare qualcuno mi aiuti per risolvere il seguente problema:StringBuilder.ToString() genera un 'indice fuori intervallo' eccezione

sto ottenendo ora e poi la seguente eccezione:

Indice era fuori portata. Deve essere non negativo e inferiore alla dimensione di della raccolta. Nome parametro: chunkLength

su stringBuilder.ToString().

Ciò che è strano è se metto stringBuilder.ToString() nell'orologio, funziona perfettamente.

+10

È possibile che lo StringBuilder venga utilizzato anche da un altro thread? –

+1

Puoi fornire lo snippit che causa l'eccezione incluso il builder di stringhe? – deepee1

+0

Il stringBuilder.AppendLine viene chiamato su un evento. Viene quindi visualizzato sullo schermo su un thread diverso. –

risposta

27

Sembra che si tratti di un problema con più thread. Ho bloccato il thread per impedire l'accesso multiplo allo stringBuilder allo stesso tempo.

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