我想知道当回调方法没有返回任何内容时,是否有人有关于HttpPollingDuplex上异步回调的机制的信息。当以下代码运行时,在TimeSpan span中找到的结果并不完全符合我的预期。
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返回的时间是在Http民意调查之间的内部WCF队列中花费的时间和服务器与服务之间的消息的旅行时间,然后是从客户端到服务的确认的旅行时间。起初,我收到的结果似乎证实了我的预感,因为处理每条消息的时间远远高于AsyncCallback触发的时间。但是,随着客户端的压力,确认时间似乎会增加并超过发送和处理消息的总时间。这使得发送消息和接收确认之间的时间间隔有些神秘。
任何人都可以对此有所了解吗?