微量元素中的autoflush属性有什么作用

4 c# asp.net asp.net-mvc trace

我的 web.config 文件中有以下代码:

<system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

在我后面的代码中的某个地方:

System.Diagnostics.Trace.WriteLine("From the trace");
Run Code Online (Sandbox Code Playgroud)

运行应用程序后,TextWriterOutput.log 文件创建成功,但为空白。但是,在将 autoflush 属性更改为 true 后,跟踪写入 TextWriterOutput.log。

我还注意到我可以通过使用使跟踪写入 TextWriteOutput.log

System.Diagnostics.Trace.Flush();

而不是将 autoflush 属性修改为 true。

我在https://msdn.microsoft.com/en-us/library/system.diagnostics.trace.flush(v=vs.110).aspx 中读到了它, 但对我来说没有意义。为什么跟踪不能立即写入输出文件?谁能用简单的话解释一下为什么?

Tho*_*que 6

Flush方法强制将输出写入文件。将autoflush属性设置为true会导致 Trace 始终立即写入文件,而不是被缓冲。