分享个代码,多个StreamWriter同步写入
利用反射实现,同步将多内容输出到多个TextWriter中
代码:
通过StackTrace()取得调用被调用方法,然后反射出TextWriter上对应的方法,然后调用就搞定了。
重写StreamWriter中几个相关方法,即可完在同步输出
小试一下:
杠杠的,屏幕上的信息,同步记录到Log.txt中
完整代码 点这,我是来坑分的
代码:
private void MultiCall(params object[] ptrs)
{
if (this.Writers.Count == 0)
return;
var st = new StackTrace();
var s = st.GetFrame(1);
var m = s.GetMethod();
var methodName = m.Name;
var twInfo = typeof(TextWriter);
if (ptrs == null || ptrs.Length == 0)
m = twInfo.GetMethod(methodName, new Type[] { });
else
{
Type[] types = new Type[ptrs.Length];
for (var i = 0; i < ptrs.Length; i++)
{
types[i] = ptrs[i].GetType();
}
m = twInfo.GetMethod(methodName, types);
}
foreach (var w in this.Writers)
{
m.Invoke(w, ptrs);
}
}
通过StackTrace()取得调用被调用方法,然后反射出TextWriter上对应的方法,然后调用就搞定了。
重写StreamWriter中几个相关方法,即可完在同步输出
#region override TextWriter
public override void Write(char[] buffer)
{
base.Write(buffer);
MultiCall(buffer);
}
public override void Write(char value)
{
base.Write(value);
MultiCall(value);
}
public override void Write(string value)
{
base.Write(value);
MultiCall(value);
}
public override void Write(char[] buffer, int index, int count)
{
base.Write(buffer, index, count);
MultiCall(buffer, index, count);
}
#endregion小试一下:
using (log = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "log.txt", false))
{
var con = Console.OpenStandardOutput();
var smw = new StreamMultiWriter(con,Console.OutputEncoding);
smw.AutoFlush = true;
smw.Writers.Add(log);
Console.SetOut(smw);
Console.WriteLine("Console日志同步输入测试");
Console.WriteLine("当前时间:{0}", DateTime.Now);
Console.WriteLine();
smw.Writers.Remove(log);
}杠杠的,屏幕上的信息,同步记录到Log.txt中
完整代码 点这,我是来坑分的

...全文
相关推荐
ee.rar_342eecom_c#写入txt文件_www_342ee_com_www342ee
标题 "ee.rar_342eecom_c#写入txt文件_www_342ee_com_www342ee" 提供的信息表明,这个压缩包可能包含一个使用C#编程语言编写的示例代码,该代码用于在DOS环境下将特定数据
C#通过流写入一行数据到文件的方法
本文实例讲述了C#通过流写入一行数据到文件的方法。分享给大家供大家参考。具体如下:using System;using System.IO;public class WriteFileStuff {
c#程序删除自身代码示例分享
“C#程序删除自身代码示例分享”在.NET框架中,由于正在运行的程序受到系统的保护,无法直接删除自身。为了实现程序自删除的功能,通常采取一种间接的方法,即通过启动一个新的进程来执行删除操作。这里有
c# 对CSV文件操作(写入、读取、修改)
在C#编程中,CSV(Comma Separated Values)文件是一种常用的文本格式,用于存储表格数据,因其易于阅读和分享而被广泛采用。本文档详细介绍了如何在C#中进行CSV文件的操作,包括写
provadelloSballo:分享证明
**文件操作**:由于提到的是一个压缩包文件,项目可能涉及到读取、写入和解压文件。


