为什么在尝试基于日期时间创建文件夹名称时出现异常?

Why getting exception when trying to create a folder name based on date time?

左边的截图中,我在textBox Text上得到了什么,右边的是点击继续按钮时的异常

创建folder/s方法的代码:

private void CreateDownloadFolders()
        {
            string locationToCreateFolderRadar = textBoxRadarPath.Text;
            string locationToCreateFolderSatellite = textBoxSatellitePath.Text;
            string folderName = "";
            string date = DateTime.Now.ToString("ddd MM.dd.yyyy");
            string time = DateTime.Now.ToString("HH.mm tt");
            string format = "{0} on {1} At {2}";
            folderName = string.Format(format, date, time);
            Directory.CreateDirectory(locationToCreateFolderRadar + folderName);
            Directory.CreateDirectory(locationToCreateFolderSatellite + folderName);
        }

调用CreateDownloadFolders方法的按钮点击事件:

private async void btnStart_Click(object sender, EventArgs e)
        {
            CreateDownloadFolders();

            urls = new List<string>();

            lblStatus.Text = "Downloading...";

            rad.GetRadarImages();
            await Task.Delay(5000);
            foreach (string link in rad.links)
            {
                urls.Add(link);
            }

            await sat.DownloadSatelliteAsync();
            foreach (string link in sat.SatelliteUrls())
            {
                urls.Add(link);
            }

            urlsCounter = urls.Count;

            await DownloadAsync();
        }

可能是因为按钮点击事件是异步类型?

您的问题在这一行:

  folderName = string.Format(format, date, time);

您只发送了两个参数,格式为 3:

 string format = "{0} on {1} At {2}";

你有两种方法可以解决这个问题:

1:

 string format = "{0} on {1} At X"; // expect only 2 parameters

2:

   folderName = string.Format(format, date, time, "something else"); // send all 3 parameters