2012-07-04 16 views
10

मैं लॉगिंग के लिए पृष्ठभूमि कार्यकर्ता के साथ संयोजन में एक स्ट्रीमराइटर का उपयोग कर रहा हूं।मैं कैसे बता सकता हूं कि एक स्ट्रीमराइटर बंद है या नहीं?

इस तरह के रूप में, मैं DoStuff() विधि प्रगति ईवेंट उत्पन्न में

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(); 
} 

बातें की है।

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

मुझे लगता है कि यह वास्तव में गंध करता है। मैं इसे बेहतर कैसे बना सकता हूं, या कम से कम मैं लॉगफाइल को कैसे बंद कर सकता हूं? बहुत सारे संदेश हैं, इसलिए मैं लगातार लॉगफाइल खोलने और बंद करने के बारे में चिंतित हूं।

उत्तर

16

तो StreamWriter बंद कर दिया है, BaseStream संपत्ति null वापस आ जाएगी।

+0

कूल - तकनीकी भाग का जवाब दें। – Melanie

+0

@Melanie: 'फ़ाइल :: AppendText' आपके मामले में उपयोगी हो सकता है। – leppie

संबंधित मुद्दे

 संबंधित मुद्दे