从webservice调用WCF服务异步 - 图像上载服务

时间:2013-12-03 17:08:16

标签: c# .net multithreading wcf web-services

我在实现对WCF的异步调用时遇到问题,无法通过Web服务上传图像和进行处理。

ImageWCFService.svc.cs

 public IAsyncResult BeginSaveImage(int count, AsyncCallback callback, object state)
    {
        // Create a task to do the work
        var task = Task<int>.Factory.StartNew(this.SaveImage, state);

        return task.ContinueWith(res => callback(task));
    }


 public int EndSaveImage(IAsyncResult result)
  {
    return ((Task<int>)result).Result;
  }

public  int SaveImage(object state)
        {
             // the object state is a file stream
             // processes the image and uploaded it to CDN (Long process)
}

IImageWCFService.cs

 [OperationContract(AsyncPattern = true)]    
 IAsyncResult BeginSaveImage(int count, AsyncCallback callback, object state);

 int EndSaveImage(IAsyncResult result);

ImageWebService.asmx.cs

 [ScriptMethod]
    protected void SaveImage(){

        HttpPostedFile file = HttpContext.Current.Request.Files[0];

        var proxy = new ImageServiceReference.ImageWCFServiceClient();

        object state = file.InputStream;

        var task = Task<int>.Factory.FromAsync(proxy.BeginSaveImage, proxy.EndSaveImage,10, state);
}

我的目标是在服务器上启用图像的异步处理,以提高服务器上的图像处理效率。

该文件将通过webservice(.asmx)上传,然后我将运行一个tasnk来处理传递给'state'对象的文件流。

我收到错误:

The best overloaded method match for 'System.Threading.Tasks.TaskFactory<int>.FromAsync(System.IAsyncResult, System.Func<System.IAsyncResult,int>, System.Threading.Tasks.TaskCreationOptions, System.Threading.Tasks.TaskScheduler)' has some invalid arguments

虽然作为一个人,我不确定我是否正确地做了一切。但这是我能够在MSDN.com上阅读这篇文章的最好成绩。

我已经为WCF服务创建了一个服务引用,该服务生成一个代理客户端来调用WCF服务异步。

我在代码中缺少什么,以及我需要做些什么改变才能使它工作。提前谢谢。

0 个答案:

没有答案