Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想按从大到小的顺序组织我的列表框,但是组织它需要很长时间。C#_C#_Winforms - Fatal编程技术网

我想按从大到小的顺序组织我的列表框,但是组织它需要很长时间。C#

我想按从大到小的顺序组织我的列表框,但是组织它需要很长时间。C#,c#,winforms,C#,Winforms,我试图从最大的数字到最小的数字来组织我的列表框,但当我执行它时,它大约需要2分钟才能发生。它工作正常,但需要很长时间 我不知道该怎么办。这是我知道怎么做的唯一方法。如果有更好的方法,我们将不胜感激 private void button11_Click(object sender, EventArgs e) { clearFile(strPathSort); clearFile(strPathSkips);

我试图从最大的数字到最小的数字来组织我的列表框,但当我执行它时,它大约需要2分钟才能发生。它工作正常,但需要很长时间

我不知道该怎么办。这是我知道怎么做的唯一方法。如果有更好的方法,我们将不胜感激

private void button11_Click(object sender, EventArgs e)
        {
            clearFile(strPathSort);
            clearFile(strPathSkips);


            for(int i3 = 0; i3 <= countLinesInFile(strPathList); i3++)
            {
                int intMostEpisodes = int.MinValue;
                int intIndex = -1;
                for (int i = 0; i <= countLinesInFile(strPathList); i++)
                {
                    bool booOk = true;
                    StreamReader sr = new StreamReader(strPathSkips);
                    for (int i2 = 0; i2 <= countLinesInFile(strPathSkips); i2++)
                    {
                        if (sr.Peek() != -1)
                        {
                        if (i == int.Parse(sr.ReadLine().ToString()))
                            booOk = false;
                        }
                    }
                    sr.Close();
                    if (findEpisodesOfLine(i) > intMostEpisodes && booOk == true)
                    {
                        intMostEpisodes = findEpisodesOfLine(i);
                        intIndex = i;
                    }
                }
                StreamWriter swSkips = new StreamWriter(strPathSkips, true);
                swSkips.WriteLine(intIndex);
                swSkips.Close();
                StreamWriter sw = new StreamWriter(strPathSort, true);
                sw.WriteLine(intIndex);
                sw.Close();
            }
            StreamWriter sw3 = new StreamWriter(strPathSorted, false);
            StreamReader sr4 = new StreamReader(strPathSort);
            for (int i4 = 0; i4 <= countLinesInFile(strPathSort); i4++)
            {
                if (sr4.Peek() != -1)
                sw3.WriteLine(readSpecificLine(strPathList, int.Parse(sr4.ReadLine())));
            }
            sw3.Close();
            sr4.Close();
            addInfo(strPathSorted, lbListe, true);
        }
private void按钮11\u单击(对象发送者,事件参数e)
{
clearFile(strPathSort);
clearFile(strPathSkips);

对于(int i3=0;i3来说,每次调用
countLinesInFile(strPathSort)
时,似乎都要转到文件,这将非常慢。事实上,循环中有很多文件操作不断重复。最好将所有操作都保存在内存中,并在最后写入

取而代之的是

var lineCount = countLinesInFile(strPathList);
然后在你的循环中使用它

for(int i3 = 0; i3 <= lineCount; i3++)

用于(int i3=0;i3您的问题说您正在尝试对列表框进行排序。但是您的代码都没有与列表框进行交互。lbliste=listbox;countlines文件统计文本文件中有多少行。为什么您一直在循环中打开和关闭StreamWriter?为什么不在循环之前打开它们并保持它们打开?是否存在特殊情况r您不使用
ListBox.Sorted
的原因?如果您可以共享一个,那就太棒了。特别是
addInfo
的内容。这是有效的,但在第三行之后,它不断重复第三行。