运行 当我尝试将文件内容输入列表框时程序冻结

Program freezes when running as I try to input file contents into listbox

我试图将此文件的内容添加到列表框中,但每次我这样做时,它都会冻结应用程序。我在可变行上放了一个手表,其中包含我要输入的数据,但它从文件中读取它,发生错误。

        {

            StreamReader inputfile;

            inputfile = File.OpenText("ClosingStock.txt");

            while (!inputfile.EndOfStream)
            {
                string[] lines = File.ReadAllLines("ClosingStock.txt");
                SummaryClosinglistBox.Items.Add(lines).ToString();
            }
            
        }

Any help would be very much appreciated.

此循环条件将导致无限循环,因为您永远不会更改 inputFile 变量上的 EndOFStream

while (!inputfile.EndOfStream)

您读取带有 File.ReadAllLines 的行并不意味着 inputFile 流前进到流的末尾。 ReadAllLines 打开它自己的流,读取所有内容,然后关闭它的内部流。所以你只需要阅读这些行,最终添加对文件存在性的检查。空文件不会执行任何操作,因为不会添加任何行。但如果你真的想要,你也可以添加对行数的检查。

if(File.Exists("ClosingStock.txt"))
{
    string[] lines = File.ReadAllLines("ClosingStock.txt");

    if(lines != null && lines.Length > 0)
        SummaryClosinglistBox.Items.AddRange(lines);
}

请注意,要将一组项目添加到 ObjectCollection,您应该使用 AddRange 而不仅仅是 Add