我希望能夠測量執行異步方法所花費的時間。如何知道異步調用何時開始?
當我同步調用方法時,我運行下面的代碼,並獲取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();
}
問題是秒錶不再測量執行請求所需的時間。它們測量從請求輸入到ThreadPool隊列中直到調用結束的時間。所以我最終列出了一個秒錶,時間線性上升。
如何修復我的秒錶?有沒有辦法確切地知道請求何時開始?
謝謝!
更新:我無法更改MyMethod的實現。
爲什麼你不能改變MyMethod的實現? – 2009-10-26 17:23:38