WCF HttpPollingDuplex Server: время между асинхронным вызовом и AsyncCallBack - PullRequest
0 голосов
/ 02 марта 2012

Мне интересно, есть ли у кого-нибудь информация о механизме асинхронного обратного вызова через HttpPollingDuplex, когда метод обратного вызова ничего не возвращает. Когда запускается следующий код, результаты, найденные в интервале TimeSpan, не совсем соответствуют ожиданиям.

AsyncCall:

IAsyncResult iar = objCallback.BeginUpdate(
                            updateMessage,  
                            OnDeliverComplete, 
                            new Stats() { TimeSent = DateTime.Now, ... }
                         );

AsyncCallback:

    private void OnDeliverComplete(IAsyncResult iar)
    {
        try
        {
            Stats stats= iar.AsyncState as UpdateInProgresStr;
            if (stats!= null)
            {
                // !!!
                TimeSpan span = DateTime.Now - stats.TimeSent; // <-------
                // !!!
            }
        }
        catch (Exception ex)
        {
            loggingDispatcher.Exception(ex);
        }
    }

Сначала я подумал, что время, возвращаемое TimeSpan, будет временем, проведенным во внутренней очереди WCF между Http-опросами и временем прохождения сообщения между сервером и службой, а затем временем прохождения подтверждения от клиента к службе. Сначала полученные результаты, казалось, подтвердили мою догадку, поскольку время обработки каждого сообщения было намного больше, чем время, необходимое для запуска AsyncCallback. Однако, как подчеркивает клиент, время подтверждения увеличивается и превышает общее время отправки и обработки сообщений. Что делает промежуток времени между отправкой сообщения и получением подтверждения несколько загадочным.

Кто-нибудь может пролить свет на это?

...