场景如下:
一个相册系统,点击小缩略图时显示对应大图,大图显示采用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
求解决...