【问题标题】:String Builder in C# with WCF Host and Client带有 WCF 主机和客户端的 C# 中的字符串生成器
【发布时间】:2013-05-14 00:40:36
【问题描述】:

我对@9​​87654322@ 中的StringBuilder 有疑问。我有生成数百万行数据的过程。我使用StringBuilder 作为缓冲区。因此,每当我得到 20000 行并打开文件并将数据转储到文件中时。每 20000 行我将数据转储到文件中。 现在为此我从处理中得到一行,所以我所做的是将数据附加到StringBuilder 对象(缓冲区)中的新行中。但是当我将ToString() 方法与StringBuilder 一起使用时,它不会将数据转换为String

public static stringBuilder Message = new StringBuilder();   

Host

for(int i=0; i<20000; i++)
    string Lines = " 20000 Data lines one by one appended";

    Message.AppendLine(Lines);
    Event(EventName, Message.ToString());

Client

Void FileWrite(String Message)
{
     //Stream Writer to write the data into file.
     writeToFile.Write(Message);
     writeToFile.Flush();
}

我的客户端是WCF 客户端,它从主机中的处理中获取行值。 当我订阅的事件被触发并获取StringBuffer 的字符串值并将其打印在文件中。写入文件的方法存在于客户端。我的事件在客户端触发,但StringBuilder 值未打印在文件中。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 我不明白你在做什么。您认为服务器上的字符串生成器和客户端上的字符串生成器之间存在某种关系吗?
  • 您确实需要发布您的实际代码,您发布的内容令人困惑,肯定不会编译
  • 我正在做的是在服务器端我正在处理的东西一次会给我 1 行,我将该行存储在 StringBuffer 对象中。所以我将在 StringBuffer 对象中追加 20000 行。一旦我得到 20000 行,我将调用客户端的回调方法,在该方法中我将 StringBuilder 对象作为参数传递。在回调方法中,它会将所有 20000 行打印到我拥有的日志文件中。但是我的问题是我看到该对象被传递给客户端,但它没有将 stringbuilder 的值转储到文件中。如果我只通过参数中的行,它就可以工作。
  • 所以我的问题是:是不是因为对 StringBuilder 容量的限制,我无法在 StringBuilder 对象中附加完整的 20000 行。

标签: c# wpf windows wcf


【解决方案1】:

尝试使用System.Environment.NewLine 更改您的代码以执行类似的操作

for(int i=0;i<20000;i++)
    string Lines = " 20000 Data lines one by one appended"+System.Environment.NewLine;
    Message.AppendLine(Lines);
    Event( EventName, Message.ToString());

    Client:
    Void FileWrite(String Message)
    {
     //Stream Writer to write the data into file.
     writeToFile.Write(Message);
     writeToFile.Flush();
    }

【讨论】:

  • Message.AppendLine 不会在 Lines 中添加换行符吗?
  • AppendLine 确实在您要附加的结尾字符串添加换行符。但是,如果您将多行添加到单个字符串中(您的代码表明您的 for 循环在 AppendLine 周围没有括号,因此您只附加一个字符串)它只会在您的字符串中添加一个换行符(不是 20,000 I认为你正在寻找)。该代码很难理解,所以这是我对您要查找的内容的最佳猜测。
猜你喜欢
  • 2012-10-04
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2015-04-05
  • 1970-01-01
相关资源
最近更新 更多