Oppure

Loading
19/04/11 0:54
Sparvier0
Salve,

ho la necessità di aggiungere delle stringhe di testo ad un file.txt. Per farlo utilizzo due flussi StreamWriter, e il secondo mi sovrascrive sempre ciò che il primo ha salvato.
Documentandomi ho visto che devo passare per un file temporaneo, ho provato un pò ma non mi riesce. Sapreste indicarmi una via per risolvere tale problema?

Grazie


Edit -

Ho provato a condividere StreamWriter sw ponendolo in una classe statica dove tengo le variabili dei vari form (parametri utili per il programma) . Ho dovuto però non chiudere lo StreamWriter dopo la scrittura nel primo form e nel secondo per poi chiuderlo nel terzo form, dopo che l'utente ha finito di inserire i dati, questo può darmi problemi?

Mi scuso per aver editato e non aver utilizzato l'apposito metodo aggiungi commento, ma non ci stavo..;)
Ultima modifica effettuata da Sparvier0 19/04/11 11:48
aaa
19/04/11 7:48
HeDo

siccome l'output degli streamwriter è bufferizzato è normale che ti succeda questo, in quanto l'effettiva scrittura dei dati avviene solo a blocchi e generalmente (per piccole quantità di dati) solo alla chiusura del file (o alla chiamata di flush).

per ovviare al tuo problema semplicemente ti consiglio di condividere lo stesso streamwriter tra i due frammenti di codice che intendono scrivere sul file. Sarebbe anche furbo fare una cosa di questo genere:


lock (writer) {
    writer.WriteLine("Ciao a tutti");
}



(in entrambi i frammenti di codice)

in questo modo l'accesso all'oggetto StreamWriter viene correttamente serializzato nel caso di operazioni crossthread :)
aaa
19/04/11 11:02
Se devi aggiungere alla fine di un file di testo del testo ti consiglio di utilizzare IO.File.AppendText
Molto semplice e pratico :yup: