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