因此,我一直在尝试使用txt文件将所有英语单词导入程序。而且由于英语单词很多,使用我当前的方法位于下面的底部,确实需要很长时间。但我也尝试过:
string a = words.ReadToEnd();
哪个也不是那么好。我通过使用以下命令减少了程序必须输入的单词数量:
string a = words.ReadBlock(char[],0,500);
由于这很好,所以我知道这不是代码。因此,我的问题是如何加快此过程,以及如果将字符串保存在“设置”中还是要长时间加载,字符串是否会立即加载。感谢您的帮助。
public FrmMain()
{
InitializeComponent();
System.IO.StreamReader words = new System.IO.StreamReader(@"C:\Users\Cyril\Downloads\words_alpha.txt");
string line;
int counter = 0;
while((line=words.ReadLine())!=null)
{
listBox1.Items.Add(line);
dict[counter] = line;
counter++;
}
}
string[] dict = new string[1000000];
答案 0 :(得分:2)
我使用控制台应用程序进行了成千上万个随机字符串的编写和读取工作,并获得了以下结果:
One Thousand words :: To generate : 8 milliseconds, To read : 9 milliseconds
Ten Thousand words :: To generate : 14 milliseconds, To read : 7 milliseconds
Hundred Thousand words :: To generate : 73 milliseconds, To read : 12 milliseconds
One Million words:: To generate : 525 milliseconds, To read : 181 milliseconds
然后,我尝试使用主线程将它们加载到Win Forms列表框中(由OP完成),并且由于长时间运行的操作将主UI线程挂起而导致超时。
OP需要使用此stackoverflow问题中讨论的虚拟视图: C# Virtual List View in WinForms
,并在此处给出了示例代码(来自上述SFQ): https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.virtualmode?redirectedfrom=MSDN&view=netframework-4.7.2#System_Windows_Forms_ListView_VirtualMode