tôi có cửa sổ ứng dụng mẫu đơn này là mã của tôi:Progress <T> không có báo cáo chức năng
private async void btnGo_Click(object sender, EventArgs e)
{
Progress<string> labelVal = new Progress<string>(a => labelValue.Text = a);
Progress<int> progressPercentage = new Progress<int>(b => progressBar1.Value = b);
// MakeActionAsync(labelVal, progressPercentage);
await Task.Factory.StartNew(()=>MakeActionAsync(labelVal,progressPercentage));
MessageBox.Show("Action completed");
}
private void MakeActionAsync(Progress<string> labelVal, Progress<int> progressPercentage)
{
int numberOfIterations=1000;
for(int i=0;i<numberOfIterations;i++)
{
Thread.Sleep(10);
labelVal.Report(i.ToString());
progressPercentage.Report(i*100/numberOfIterations+1);
}
}
tôi nhận được biên soạn lỗi rằng "System.Progress' không chứa một định nghĩa cho 'Báo cáo' và không có phần mở rộng phương pháp 'báo cáo' chấp nhận một cuộc tranh luận đầu tiên của loại 'System.Progress' có thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?)"
nhưng Nếu bạn nhìn vào lớp Progress:
public class Progress<T> : IProgress<T>
và giao diện IProgress có chức năng báo cáo:
public interface IProgress<in T>
{
// Summary:
// Reports a progress update.
//
// Parameters:
// value:
// The value of the updated progress.
void Report(T value);
}
tôi thiếu gì?
những gì bạn có ý nghĩa bởi "thực hiện giao diện rõ ràng" các phương pháp giao diện không nên được hiển thị trong phân lớp? –
@ilayzeidman Tôi đã giải thích nó [ở đây] (http://stackoverflow.com/a/25585242/2530848) –
Cảm ơn! Tôi hiểu tôi không biết về lựa chọn đó ... –