3
ファイルを開き、行ごとに読み込み、各行を操作して別のファイルに書き出すC#WPFプログラムがあります。その部分は正常に動作しました。私はいくつかの進捗報告を追加したいので、メソッドを非同期にし、進捗報告を待っていました。進捗報告は非常にシンプルです。画面上のラベルを更新するだけです。ここに私のコードです:Async Await進捗報告が機能しない
async void Button_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "Select File to Process";
openFileDialog.ShowDialog();
lblWaiting.Content = "Please wait!";
var progress = new Progress<int>(value => { lblWaiting.Content = "Waiting "+ value.ToString(); });
string newFN = await FileProcessor(openFileDialog.FileName, progress);
MessageBox.Show("New File Name " + newFN);
}
static async private Task<string> FileProcessor(string fn, IProgress<int> progress)
{
FileInfo fi = new FileInfo(fn);
string newFN = "C:\temp\text.txt";
int i = 0;
using (StreamWriter sw = new StreamWriter(newFN))
using (StreamReader sr = new StreamReader(fn))
{
string line;
while ((line = sr.ReadLine()) != null)
{
// manipulate the line
i++;
sw.WriteLine(line);
// every 500 lines, report progress
if (i % 500 == 0)
{
progress.Report(i);
}
}
}
return newFN;
}
私は助け、助言や提案をいただければ幸いです。
OMG!出来た!!!私はとても興奮しています。私は最終的にこの非同期のものを理解し始めています。ありがとう、ありがとう、ありがとう!!!! – Missy