我有一个可执行文件,它处理大量(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());
});
关于Linux 中使用 Mono 的 C# List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847445/