使用拦截器测量执行时间
本文关键字:测量 执行时间 | 更新日期: 2023-09-27 18:32:48
我正在拦截我在应用程序中托管的服务的 wcf 调用,以显示有关服务的数据(每个方法处理了多少次调用,记录方法参数等)。除此之外,我还想测量每个方法的执行时间。
我已经用 Castle 拦截器包装了实例,我使用 StopWatch
来测量同步方法。
但是,我不能在异步方法上使用秒表,因为我有 2 种不同的方法(对于 beginInvoke
和 EndInvoke
,我拦截了 WCF 调用程序)。
如何测量执行时间,或者至少关联 Begin 和 End 的调用?
谢谢
听起来这个问题已经在这里得到了回答 将秒表与异步方法一起使用
干杯
知道了,
我意识到invocation.ReturnValue
承载任务,所以我所要做的就是实现一个TaskInterceptor
:
public class TaskInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
var task = invocation.ReturnValue as Task;
InterceptBeforeInvoking();
invocation.Proceed();
task.ContinueWith(InterceptAfterInvocation);
}
private void InterceptAfterInvocation(Task obj)
{
}
private void InterceptBeforeInvoking()
{
}
}