我希望能够测量执行异步方法所花费的时间。如何知道异步调用何时开始?
当我同步调用方法时,我运行下面的代码,并获取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