【问题标题】:How can I tell if a streamwriter is closed?如何判断流写入器是否已关闭?
【发布时间】:2012-07-04 15:30:29
【问题描述】:

我正在结合使用 streamwriter 和后台工作人员来进行日志记录。

因此,我有

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

DoStuff() 方法中的东西引发了 Progress 事件。

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

我觉得这真的很香。我怎样才能让它变得更好,或者至少我怎样才能检查日志文件没有被关闭?有很多消息,所以我担心连续打开和关闭日志文件。

【问题讨论】:

    标签: .net c++-cli clr backgroundworker streamwriter


    【解决方案1】:

    如果StreamWriter 关闭,BaseStream 属性将返回null

    【讨论】:

    • 酷 - 回答技术部分。
    • @Melanie: File::AppendText 可能对你有用。
    • 这个答案是错误的 - 对我来说它没有返回 null 并且 Resharper 也警告我 (streamWriter.BaseStream != null) 总是正确的。
    • @Trojaner 在 .NET 桌面上就是这种情况。你在用别的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多