与使用回调相比,为什么使用回调会导致如此多的开销

时间:2012-03-21 16:58:31

标签: c# wcf silverlight asynchronous

在我看来,我可以通过三种不同的方式发出和处理服务电话:

  • 同步:只需调用service.Method即可获取您想要的数据
  • 异步1,无回调:
public void ServiceCallNoCallback()
{           
    var result = service.BeginCall(**);
    result.AsyncWaitHandle.WaitOne();
    var devicePageDto = service.EndCall(result);
}
  • 异步2,带回调(伪):
    public void ServiceCallWithCallback()
    {             
        deviceService.BeginGetDevicePage(Callback);
    }

    public void Callback(IAsyncResult result)
    {
        try
        {
            var callResult = service.EndCall(result);

        }
        catch(Exception ex)
        {
            Console.WriteLine("ex: " + ex.Message);                
        }            
    }

后一种方法用于silverlight应用程序的上下文中。但真的很慢。多次调用这些方法确实会堵塞所有内容。 为什么是这样?是什么让后一种异步方法与第一种相比变得如此缓慢?

0 个答案:

没有答案