提示コードの///
コメント部内のコードですがfor
文のループ変数j
が勝手に書き換わってしまいます、コンソールログ参照。これはなぜでしょうか?filePathList.Count
の値は確かに1
なのですが、書き換わる原因が知りたいです。
コンソールログ
ああああ 1 1 うううう 0 いういいい 1 例外がスローされました: 'System.ArgumentOutOfRangeException' (System.Private.CoreLib.dll の中) 型 'System.ArgumentOutOfRangeException' の例外が System.Private.CoreLib.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした Index was out of range. Must be non-negative and less than the size of the collection.
ソースコード
cs
1 2 private async void buttonConvert_Click(object sender, EventArgs e) 3 { 4 if(folderBrowserDialogSavePath.SelectedPath != "") 5 { 6 if(filePathList.Count > 0) 7 { 8 Debug.WriteLine("ああああ"); 9 for (int i = 0; i < filePathList.Count; i++) 10 { 11 string file = Path.GetFileName(filePathList[i]); 12 file = Path.ChangeExtension(file,".jpeg"); 13 file = folderBrowserDialogSavePath.SelectedPath + "\\" + file; 14 filePathList_Save.Add(file); 15 } 16 17 buttonConvert.Enabled = false; 18 Stopwatch sw = new Stopwatch(); 19 sw.Start(); 20 var slim = new SemaphoreSlim(5); 21 22 23 Debug.WriteLine(filePathList.Count); 24 Debug.WriteLine(filePathList_Save.Count); 25 26////////////////////////////////////////////////////////////////////////////////////////////// 27 for(int j = 0; j < filePathList.Count; j++) 28 { 29 Debug.WriteLine("うううう " + j); 30 31 taskList.Add(Task.Factory.StartNew(() => 32 { 33 Debug.WriteLine("いういいい " + j); 34 Process(slim, filePathList[j],filePathList_Save[j]); 35 this.Invoke((Action)(() => 36 { 37 progressBar_float += progressBarPerFile; 38 progressBar.Value = (int)progressBar_float; 39 })); 40 })); 41 } 42////////////////////////////////////////////////////////////////////////////////////////////// 43 await Task.WhenAll(taskList); 44 buttonConvert.Enabled = true; 45 46 slim.Dispose(); 47 progressBar.Value = 0; 48 sw.Stop(); 49 TimeSpan ts = sw.Elapsed; 50 51 Debug.WriteLine("convert time: " + ts.TotalSeconds +"."+ ts.Milliseconds); 52 } 53 else 54 { 55 MessageBox.Show("NO input file(s)", "", MessageBoxButtons.OK, MessageBoxIcon.Error); 56 } 57 } 58 else 59 { 60 MessageBox.Show("\n\n NO set save path", "", MessageBoxButtons.OK, MessageBoxIcon.Error); 61 } 62 63 }
こちらの質問が複数のユーザーから「調査したこと・試したことが記載されていない質問」という指摘を受けました。

回答1件
あなたの回答
tips
プレビュー