Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取异步请求的运行时间_C#_Asynchronous_Timer_Httpwebrequest_Httpwebresponse - Fatal编程技术网

C# 获取异步请求的运行时间

C# 获取异步请求的运行时间,c#,asynchronous,timer,httpwebrequest,httpwebresponse,C#,Asynchronous,Timer,Httpwebrequest,Httpwebresponse,我试图获取异步请求期间经过的时间,但得到的时间与wireshark时间完全不同 这真的很奇怪,因为我在同步请求池中做同样的事情,我得到了wireshark时间 这是我的代码: public void getResponseAsync() { RequestState rs = new RequestState(); rs.Request = this.webRequest; //On ajoute la requete dans l'objet

我试图获取异步请求期间经过的时间,但得到的时间与wireshark时间完全不同

这真的很奇怪,因为我在同步请求池中做同样的事情,我得到了wireshark时间

这是我的代码:

    public void getResponseAsync()
    {
        RequestState rs = new RequestState();
        rs.Request = this.webRequest;  //On ajoute la requete dans l'objet état pour pouvoir le récupérer dans la callback
        this.timerAsync.Restart();
        IAsyncResult ar = rs.Request.BeginGetResponse(new AsyncCallback(this.ResponseCallback), rs);      // Appel asynchrone
    }

    public void ResponseCallback(IAsyncResult ar)
    {
        RequestState rs = (RequestState)ar.AsyncState;  //Récupération de l'objet etat 
        HttpWebRequest req = rs.Request;                //Récupération de la requete web (object HttpWebRequest)
        try //Récupération de la réponse Web    
        {
            HttpWebResponse resp = (HttpWebResponse)req.EndGetResponse(ar);
            this.timerAsync.Stop();
            this.timeAsync = this.timerAsync.ElapsedMilliseconds;
            ...
            ...
         }
    }
this.timeAsync的值与Wireshark的值相差很远

我做错什么了吗


谢谢您的帮助。

您确定只有一个getResponseAsync()调用吗? 在getResponseAsync上添加断点以确定


多次调用getResponseAsync将重置计时器。

对于每个请求,我都会得到一个异步响应,但计时器不会重新启动:
For(int k=0;k
我得到的值高于预期值。您是否正在监视与getResponseAsync()调用对应的回调?因为每个getReponseAsync()都将调用您的ResponseCallback。如果你没有得到相应的回调,你会得到一个错误的时间值。很抱歉,我看不出这段代码有什么问题。我试图将开始时间放在我的RequestState对象中:
rs.start=DateTime.Now和在我的响应回调中:
RequestState rs=(RequestState)ar.AsyncState;HttpWebRequest请求=rs.请求;DateTime start=rs.start;HttpWebResponse resp=(HttpWebResponse)请求EndGetResponse(ar);this.timeAsync=Helpers.getDiffMs(开始)