синхронизация загрузки веб-клиента (silverlight) - PullRequest
1 голос
/ 24 сентября 2010

поэтому у меня есть эта функция, которая вызывается несколько раз во время моей программы.

    //global variable
    BitmapImage img;

    private void LoadImageFile(string ImageName)
    {
        WebClient ImageClient = new WebClient();
        ImageClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(ImageFileLoaded);
        xmlClient.DownloadStringAsync(new Uri("/images/"+ImageName, UriKind.RelativeOrAbsolute));
    }

    void ImageFileLoaded(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            img.set = e.Result;



        }
    }

следующий код использует новое значение «img», поэтому я хочу, чтобы он запускался только после того, как img был назначен новый источник, но кажется, что он запускается до того, как это произойдет

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

Вы хотите использовать WebClient.OpenReadAsync () вместо WebClient.DownloadStringAsync (), потому что хотите прочитать двоичное изображение, а не строку.

Затем, когда вы получаете поток, вы вызываете BitmapImage.SetSource (), используя этот поток.

0 голосов
/ 24 сентября 2010

Я бы проверил этот блог Джереми Ликнесс .

Он использует corountines для организации асинхронных запросов.Я использовал этот подход и имел дело с подобными проблемами, когда я хочу, чтобы действия происходили после нескольких асинхронных задач.

...