いくつかのファイルをとり、乱数に名前を変更して別のフォルダに保存するプログラムを作った。私はコードを自分の望むようにすることができましたが、扱うファイルは時にはかなり大きく、しばらく時間がかかります。これは、ユーザーが時々プログラムがクラッシュしたと思うことを意味します。C#引数を取る関数付きプログレスバー
プログレスバーをプログラムに追加して、まだ動作していてクラッシュしていないことを明示します。
私はanother question on how to add a progress barを見ましたが、私の場合、関数は、ユーザーがクリックするボタンに依存する摂取量をとります。
私のコードにどのように追加できるのかよくわかりません。理想的には、私はbackgroundWorker_DoWork
に追加の入力を取ることができるので、それは(object sender, DoWorkEventArgs e, string[] Files)
になりますが、それは可能ではないようです。
ご協力いただければ幸いです。
関連機能のためのコードは以下の通りです:
あなたのコードを考慮private void blindSelected_Click(object sender, EventArgs e)
{
List<string> toBlind = new List<string>();
// Find all checked items
foreach (object itemChecked in filesToBlind.CheckedItems)
{
toBlind.Add(itemChecked.ToString());
}
string[] arrayToBlind = toBlind.ToArray();
blind(arrayToBlind);
}
private void blindAll_Click(object sender, EventArgs e)
{
List<string> toBlind = new List<string>();
// Find all items
foreach (object item in filesToBlind.Items)
{
toBlind.Add(item.ToString());
}
string[] arrayToBlind = toBlind.ToArray();
blind(arrayToBlind);
}
private void blind(string[] files)
{
// Generate an integer key and permute it
int[] key = Enumerable.Range(1, files.Length).ToArray();
Random rnd = new Random();
int[] permutedKey = key.OrderBy(x => rnd.Next()).ToArray();
// Loop through all the files
for (int i = 0; i < files.Length; i++)
{
// Copy original file into blinding folder and rename
File.Copy(@"C:\test\" + files[i], @"C:\test\blind\" + permutedKey[i] + Path.GetExtension(@"C:\test\" + files[i]));
}
// Show completed result
MessageBox.Show("Operation complete!", "Done!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}