Неверное значение в строке - PullRequest
0 голосов
/ 15 ноября 2011

У меня проблема со строковым значением. Строка объявлена ​​глобально. Строка name_file_image.

У меня есть этот код:

            // iterate image files
            foreach (XElement node in xml.Element("graphics").Elements("file"))
            {
                // pick image 
                if (node.Attribute("type").Value == "image")
                {

                    // demoing that we found something                
                    //MessageBox.Show(node.Element("fileurl").Value);
                    string url_image = node.Element("fileurl").Value;
                    string[] array = url_image.Split('/');
                    **name_file_image** = array[array.Length - 1];
                    //MessageBox.Show(**name_file_image**);
                    WebClient webClient = new WebClient();
                    webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_image);
                    webClient.OpenReadAsync(new Uri(url_image));
                }
            } 

    void webClient_image(object sender, OpenReadCompletedEventArgs e)
    {
        try
        {
            if (e.Result != null)
            {
                // Save image to Isolated Storage


                // Create virtual store and file stream. Check for duplicate JPEG files.
                using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    if (myIsolatedStorage.FileExists(**name_file_image**))
                    {
                        myIsolatedStorage.DeleteFile(**name_file_image**);
                    }

                    IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(name_file_image, FileMode.Create, myIsolatedStorage);


                    BitmapImage bitmap = new BitmapImage();
                    bitmap.SetSource(e.Result);

                    WriteableBitmap wb = new WriteableBitmap(bitmap);
                    wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
                    fileStream.Close();

                    //MessageBox.Show(name_file_image);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    } 

Я читаю XML из файла в памяти и хочу сохранить изображения с именем, присутствующим в XML. Но у меня есть проблема. Переменная строка всегда имеет одно и то же имя. Я полагаю, код не является правильным. Любая помощь?

1 Ответ

2 голосов
/ 15 ноября 2011

Вы вызываете метод WebClient.OpenReadAsync, который выполняет свою работу (как следует из названия) асинхронно.Чтобы устранить эту проблему, необходимо передать имя файла методом OpenReadAsync ().

В вашем случае это будет: webClient.OpenReadAsync (новый Uri (url_image), name_file_image );

В вашем обработчике событий webClient_image вы можете извлечь значение из параметра OpenReadCompletedEventArgs.Параметр e имеет несколько свойств.e.UserState теперь должен содержать ваше имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...