비동기 메서드를 실행하는 데 걸리는 시간을 측정 할 수 있기를 원합니다.비동기 호출이 실제로 시작되는시기를 아는 방법은 무엇입니까?
메서드를 동 기적으로 호출하면 다음 코드를 실행하고 MyMethod 메서드를 사용한 정확한 시간을 가져옵니다.
for (int i = 0; i < 5000; i++) {
stopWatches[i].Start();
webService.MyMethod(new Request());
stopWatches[i].Stop();
}
MyMethod를 비동기 적으로 실행하도록 코드를 변경 했으므로 이제 내 코드는 다음과 같습니다.
var callback = new Action<IAsyncResult>(ar => {
int i = (int)ar.AsyncState;
try {
var response = webService.EndMyMethod(ar);
stopWatches[i].Stop();
}
}
for (int i = 0; i < 5000; i++) {
webService.BeginMyMethod(new Request(), new AsyncCallback(callback), i);
stopWatches[i].Start();
}
문제는 스톱워치가 더 이상 요청을 실행하는 데 필요한 시간을 측정하지 않는다는 것입니다. 스레드 풀 대기열에 요청이 입력 된 후 호출이 끝날 때까지의 시간을 측정합니다. 그래서 나는 시간이 빨라지면서 스톱워치 목록을 보게된다.
스톱워치를 어떻게 수정합니까? 요청이 언제 시작되는지 정확하게 알 수있는 방법이 있습니까?
감사합니다.
업데이트 : MyMethod 구현을 변경할 수 없습니다.
왜 MyMethod의 구현을 변경할 수 없습니까? –