}\r
\r
public static TextWriter Synchronized (TextWriter writer)\r
+ {\r
+ return Synchronized (writer, false);\r
+ }\r
+\r
+ internal static TextWriter Synchronized (TextWriter writer, bool neverClose)\r
{\r
if (writer == null)\r
throw new ArgumentNullException ("writer is null");\r
if (writer is SynchronizedWriter)\r
return writer;\r
\r
- return new SynchronizedWriter (writer);\r
+ return new SynchronizedWriter (writer, neverClose);\r
}\r
\r
public virtual void Write (bool value)\r
[Serializable]\r
internal class SynchronizedWriter : TextWriter {\r
private TextWriter writer;\r
+ private bool neverClose;\r
\r
public SynchronizedWriter (TextWriter writer)\r
+ : this (writer, false)\r
+ {\r
+ }\r
+\r
+ public SynchronizedWriter (TextWriter writer, bool neverClose)\r
{\r
this.writer = writer;\r
+ this.neverClose = neverClose;\r
}\r
\r
public override void Close ()\r
{\r
+ if (neverClose)\r
+ return;\r
lock (this){\r
writer.Close ();\r
}\r