我需要能夠以獨特方式使用WebClient,我需要將圖像作爲字節流下載並將其分配給圖像,這裏有多個圖像和要分配的項目,並且這些將顯示在列表中。此應用程序是Silverlight 3應用程序,解決方案必須是可在Silverlight中使用的解決方案。如何使用OpenReadAsync和WebClient下載數據並分配給UserToken?
我有一個下載方法我想使用:
Public Sub Download(ByRef Source As Uri, ByRef Target As BitmapImage)
Dim _Client As New WebClient
_Client.OpenReadAsync(Source, Target)
AddHandler _Client.OpenReadCompleted, AddressOf Downloaded
End Sub
這裏是下載的事件處理程序(部分實現),它採用了ToByteArray方法下載的圖像數據轉換爲字節數組。
Private Sub Downloaded(ByVal sender As Object, _
ByVal e As OpenReadCompletedEventArgs)
If Not e.Cancelled Then
Dim Bytes As Byte() = ToByteArray(e.Result)
Dim Bitmap As New BitmapImage
Bitmap.SetSource(e.Result)
' Set Target Bitmap Here
End If
End Sub
目標圖像設置爲下載的鏡像(目標)是傳過來的UserToken到OpenReadAsync方法,並且可以使用OpenReadCompletedEventArgs UserState屬性讀取,但是這是隻讀的 - 我需要設置下載的方法內的目標到下載的圖像。
下載方法中如何設置下載方法中的UserToken作爲UserToken傳入的圖像源/位圖圖像?
ToByteArray是因爲圖像是作爲字節序列下載的,然後轉換爲一個數組作爲圖像再次作爲另一個問題的解決方案的一部分,但是這個代碼工作,除了那個問題 - 但它確實回答這個問題。 – RoguePlanetoid 2009-10-28 15:27:58