2012-07-04 21 views
10

Sto utilizzando uno streamwriter in combinazione con un worker in background, per la registrazione.Come posso sapere se uno streamwriter è chiuso?

Come tale, ho

System::Void 
MyUI::execBWorker_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) { 

String^ outputPath = _clr::Settings::ApplicationLogPath("_log.txt", true, false); 
logfile_ = gcnew StreamWriter(outputPath,true); 

DoStuff(); 
logfile_->Close(); 
} 

cose nel metodo DoStuff() generare l'evento Progress.

System::Void 
MyUI::execBWorker_ProgressChanged(System::Object^ sender, System::ComponentModel::ProgressChangedEventArgs^ e) { 
logfile_->WriteLine("something"); 
} 

Penso che questo puzza. Come posso renderlo migliore, o almeno come posso controllare che il file di registro non sia stato chiuso? Ci sono molti messaggi, quindi sono preoccupato di aprire e chiudere il file di log continuamente.

risposta

16

Se StreamWriter è chiuso, la proprietà BaseStream restituirà null.

+0

Cool - risponde alla parte tecnica. – Melanie

+0

@Melanie: 'File :: AppendText' potrebbe essere utile nel tuo caso. – leppie