.NET Framework
진행률 사용 및 IProgress
수색…
간단한 진행보고
IProgress<T>
는 일부 프로 시저의 진행을 다른 프로 시저로보고하는 데 사용할 수 있습니다. 이 예는 진행 상황을보고하는 기본 메소드를 작성하는 방법을 보여줍니다.
void Main()
{
IProgress<int> p = new Progress<int>(progress =>
{
Console.WriteLine("Running Step: {0}", progress);
});
LongJob(p);
}
public void LongJob(IProgress<int> progress)
{
var max = 10;
for (int i = 0; i < max; i++)
{
progress.Report(i);
}
}
산출:
Running Step: 0
Running Step: 3
Running Step: 4
Running Step: 5
Running Step: 6
Running Step: 7
Running Step: 8
Running Step: 9
Running Step: 2
Running Step: 1
이 코드가 실행되면 숫자가 순서없이 출력되는 것을 볼 수 있습니다. 이는 IProgress<T>.Report()
메서드가 비동기 적으로 실행되기 때문에 진행 상황을 순서대로보고해야하는 상황에 적합하지 않기 때문입니다.
IProgress 사용하기
System.Progress<T>
클래스에는 사용할 수있는 Report()
메서드가 없다는 점에 유의해야합니다. 이 메서드는 IProgress<T>
인터페이스에서 명시 적으로 구현되었으므로 IProgress<T>
캐스팅 될 때 Progress<T>
에서 호출해야합니다.
var p1 = new Progress<int>();
p1.Report(1); //compiler error, Progress does not contain method 'Report'
IProgress<int> p2 = new Progress<int>();
p2.Report(2); //works
var p3 = new Progress<int>();
((IProgress<int>)p3).Report(3); //works
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow