调用耗时的服务调用时WCF中的并发调用

调用耗时的服务调用时WCF中的并发调用,wcf,web-services,silverlight,c#-4.0,Wcf,Web Services,Silverlight,C# 4.0,我正在WCF web服务中执行一些耗时的文件操作,因此在该调用完成之前,我无法从我的应用程序中进行任何其他服务调用 所以我计划使用第三方物流 Task.Factory.StartNew(() => { CheckFileandCopy(path,fileName); }); 它工作,并返回true,但问题是,已完成事件没有实际结果,因为进程在单独的线程中运行,所以我

我正在WCF web服务中执行一些耗时的文件操作,因此在该调用完成之前,我无法从我的应用程序中进行任何其他服务调用

所以我计划使用第三方物流

  Task.Factory.StartNew(() =>
            {                    
                CheckFileandCopy(path,fileName);
            });

它工作,并返回true,但问题是,已完成事件没有实际结果,因为进程在单独的线程中运行,所以我没有得到实际的已完成事件,如何在任务完成后返回已完成事件,还有如何在调用耗时的方法时进行并发调用

您基本上有两种选择:

  • 在客户端执行异步调用。如果您生成一个包含异步方法的代理(例如,请参阅),这将很容易
  • 使事情异步,服务器端。这与您在示例中所做的类似。唯一缺少的是带有实际结果的回调。为此,您可以使用,其中客户端能够接收来自服务的调用,就像客户端也是服务一样。请注意,并非所有场景/绑定都支持这一点

在这两种情况下,通读会话和并发可能有助于理解事情。

为什么需要在此处完成事件?