Linux 中使用 Mono 的 C# List<string>

标签 c# linux

我有一个可执行文件,它处理大量(1000+)字符串并将每个字符串添加到字符串列表中。它用 C# 编码,在 Windows 计算机上的 Visual Studio 2017 中编译,然后导出到带有 Mono 的 Linux 计算机并在其上运行。奇怪的是,将所有字符串写入文本文件效果很好,但将它们添加到列表中会导致程序的用户界面卡住并变得无响应。

这是我的代码:

        client.BigDB.LoadRange("Clans", "ByName", null, startAt + "0000000000", stopAt + "zzzzzzzzzz", 1000, delegate (DatabaseObject[] o)
        {
            foreach (DatabaseObject obj in o)
            {
                //this section here does not work as intended
                //string ClanName = obj.GetString("name");
                //ClanNames.Add(ClanName);
                //main.ui.AppendTestBox(ClanName);
                //Clans++;

                //but this section works perfectly
                using (StreamWriter w = File.AppendText("ClanNameList.txt"))
                {
                    w.Write(obj.GetString("name") + Environment.NewLine);
                }
            }                
        });

检查输出文件后,我怀疑它被以下字符串捕获:“AK Union,Local 47”。它可以毫无问题地处理以前的每种字符,但由于某种原因它似乎不喜欢逗号。如果确实发生了这种情况,我该如何解决这个问题?

我确实尝试在谷歌和这个网站上搜索这个问题,但是搜索结果非常没有帮助,并且与我需要的完全无关:(

最佳答案

我无法确切地看到你的问题,尽管我建议的一件事是通过 StringBuilder 更新一次,而不是 1000 次

    client.BigDB.LoadRange("Clans", "ByName", null, startAt + "0000000000", stopAt + "zzzzzzzzzz", 1000, delegate (DatabaseObject[] o)
    {
        var sb = new StringBuilder();
        foreach (DatabaseObject obj in o)
        {
            var name = obj.GetString("name");
            ClanNames.Add(name);
            sb.Append(name);
        }      
        main.ui.AppendTestBox(sb.ToString());

    });

StringBuilder.Append Method (System.Text)

关于Linux 中使用 Mono 的 C# List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847445/

相关文章:

c# - 在 2D 中将一个点旋转另一个点

c# - 使用 nuget 包的目标框架注意事项?

c# - 如何在 xamarin android 应用程序中使用动画?

c# - 基于属性的编程有什么优点?

linux - 在 redhat 5 机器上构建 Python3

android - 如何在 Linux 中从 C 调用自定义系统调用

c++ - 实现允许用户在后台运行多个进程(最多同时运行三个)的 C++ 程序

c# - 获取创建线程的模块/文件名?

linux - 如何在 RPM SPEC 文件中设置可选配置文件?

arrays - 如何在for循环中正确删除数组元素