C# 为什么在使用计数器给文件名和名称编号时,它';他给了它奇怪的数字?

C# 为什么在使用计数器给文件名和名称编号时,它';他给了它奇怪的数字?,c#,.net,winforms,C#,.net,Winforms,硬盘上第一个保存的文件名是:201701311645---0,然后是201701311645---1,然后是201701311645---20,然后是201701311645---21,然后是201701311645---40和201701311645---41 但我希望它被保存为:201701311645---0然后201701311645---1然后201701311645---2然后201701311645---3然后201701311645---4和201701311645---5 在顶

硬盘上第一个保存的文件名是:201701311645---0,然后是201701311645---1,然后是201701311645---20,然后是201701311645---21,然后是201701311645---40和201701311645---41

但我希望它被保存为:201701311645---0然后201701311645---1然后201701311645---2然后201701311645---3然后201701311645---4和201701311645---5

在顶部,我添加了一个计数器变量

private int countFilesNames = 0;
然后在dowork事件中,我还将计数器重置为0一次,因此如果我再次启动backgroundworker,它将从0开始

private void bgwDownloader_DoWork(object sender, DoWorkEventArgs e)
        {
            Int32 fileNr = 0;
            countFilesNames = 0;

            if (this.SupportsProgress) { calculateFilesSize(); }

            if (!Directory.Exists(this.LocalDirectory)) { Directory.CreateDirectory(this.LocalDirectory); }

            while (fileNr < this.Files.Count && !bgwDownloader.CancellationPending)
            {
                m_fileNr = fileNr;
                downloadFile(fileNr);

                if (bgwDownloader.CancellationPending)
                {
                    fireEventFromBgw(Event.DeletingFilesAfterCancel);
                    cleanUpFiles(this.DeleteCompletedFilesAfterCancel ? 0 : m_fileNr, this.DeleteCompletedFilesAfterCancel ? m_fileNr + 1 : 1);
                }
                else
                {
                    fileNr += 1;
                }
            }
        }
将计数器向前移动1:

countFilesNames += 1;
但我得到了我想要的其他文件名


也许有更好的方法给文件名一些标识?问题是,如果我不给文件名一些标识,它会一直覆盖文件。文件名相同,但内容不同,因此我需要为每个文件指定另一个名称。

为什么不在写入文件时(因为变量看起来不像在其他地方被访问)而不是在下面增加计数器

writer = new FileStream(this.LocalDirectory + "\\" + file.Name +
                "---" + countFilesNames++ + ".png", System.IO.FileMode.Create);

这样计数器就不会因错误而递增。

我将从以下内容开始:,
使用调试器并逐步完成代码
此外,我会重构此代码,并将功能分解为更易于管理/可读的代码块/方法。这非常复杂,至少可以说,你只是抱怨文件的字典顺序?如果要更改顺序,Windows将始终在201701311645--2.png之前显示201701311645--11.png,插入一个0,使其为201701311645--02.png,201701311645--11.png。
countFilesNames += 1;
writer = new FileStream(this.LocalDirectory + "\\" + file.Name +
                "---" + countFilesNames++ + ".png", System.IO.FileMode.Create);