使用拦截器测量执行时间

本文关键字:测量 执行时间 | 更新日期: 2023-09-27 18:32:48

我正在拦截我在应用程序中托管的服务的 wcf 调用,以显示有关服务的数据(每个方法处理了多少次调用,记录方法参数等)。除此之外,我还想测量每个方法的执行时间。

我已经用 Castle 拦截器包装了实例,我使用 StopWatch 来测量同步方法。

但是,我不能在异步方法上使用秒表,因为我有 2 种不同的方法(对于 beginInvokeEndInvoke,我拦截了 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()
    {

    }
}