none
文件写入优化 RRS feed

  • 问题

  • foreach (var c in input.GetConsumingEnumerable()) { using (StreamWriter outputFile = new StreamWriter("zs5", true)) { outputFile.WriteLineAsync(c.ToString()); } }

    这段代码每次都需要重新打开文件写入,影响效率,

    如果写成这样

    using (StreamWriter outputFile = new StreamWriter("zs5", true)) {

    foreach (var c in input.GetConsumingEnumerable()) { outputFile.WriteLineAsync(c.ToString()); } }

    文件写一会,就不在往里面写了,请问如何优化啊?


    please verify my account

    2018年2月25日 6:58

全部回复

  • 可以先把字串組好再一次寫入。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2018年2月25日 13:22
  • 把这一句

    foreach (var c in input.GetConsumingEnumerable())

    改成

    var query=input.GetConsumingEnumerable();

    foreach(var c in query)

    性能的原因,可以用dotnet performance探测一下,看是文件写入慢,还是查询慢导致的。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年2月26日 0:58
  • Hi,

    欢迎在MSDN论坛发帖。

    在程序不再向文件里面写数据的时候,你有debug你的代码了吗? 或者使用try catch 语句来检查一下,是不是有什么异常信息抛出来。

    你可以着重检查 InvalidOperationExceptionObjectDisposedException 异常信息。

    因为你使用的是异步写入数据,我觉得你是不是应该加一下 await 语句。请参考下面代码:

      static async void WriteCharacters()
            {
                using (StreamWriter writer = File.CreateText("newfile.txt"))
                {
                    await writer.WriteLineAsync("First line of example");
                    await writer.WriteLineAsync("and second line");
                }
            }

    Best Regards,

    Hart


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月26日 6:38
    版主