我在实现对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服务异步。
我在代码中缺少什么,以及我需要做些什么改变才能使它工作。提前谢谢。