首页 新闻 赞助 找找看

silverlight中WebClient的CancelAsync问题?

0
悬赏园豆:10 [已关闭问题]

场景如下:

一个相册系统,点击小缩略图时显示对应大图,大图显示采用WebClient的OpenReadAsync方法异步加载图片,未加载完成前显示loading...的小动画,加载完成后在OpenReadCompleted事件中显示大图,同时隐藏loading动画

 

问题:

用户点击了第一个小图,这时WebClient开始异步加载大图,如果网络很慢的情况下,用户等不及加载完成,又点击了其它小图,这样又发起了新的异步加载,所以最终多次加载完成后,都会调用OpenReadCompleted,导致大图按加载完成的顺序依次显示了这几张大图,而最终停下的,不一定是用户最后点击的小图,为此后我在发起异步调用前,先使用webClient.CancelAsync()取消之前的异步加载(如果有的话),但是执行时,发现如果快速点击,页面报javascript错误如下:

Message: Unhandled Error in Silverlight Application WebClient does not support concurrent I/O operations.   at System.Net.WebClient.ClearWebClientState()
   at System.Net.WebClient.OpenReadAsync(Uri address, Object userToken)
   at Projection.Album.ShowData()
   at Projection.Album.sbMove_Completed(Object sender, EventArgs e)
   at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr

unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)
Line: 1
Char: 1
Code: 0

 

菩提树下的杨过的主页 菩提树下的杨过 | 小虾三级 | 园豆:554
提问于:2009-11-05 14:11
< >
分享
所有回答(1)
0

求解决...

wxingwei | 园豆:107 (初学一级) | 2011-11-29 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册