Отменить асинхронный запрос веб-клиента - PullRequest
1 голос
/ 28 февраля 2012

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

По сути, у меня есть окно поиска, гдепользователь вводит химическое имя, а веб-сервис возвращает изображение и его молекулярный вес.То, что я хотел бы сделать, это отменить веб-клиента, если пользователь уходит со страницы до завершения загрузки, или если новый поиск выполняется до завершения предыдущего (в настоящее время это приводит к сбою приложения, так как я полагаю, что у вас может быть только один запрос).за раз ??)

private void searchCactus()
        {

            WebClient imgClient = new WebClient();
            imgClient.OpenReadCompleted += new OpenReadCompletedEventHandler(imgClient_OpenReadCompleted);

            WebClient mwClient = new WebClient();
            mwClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(mwClient_DownloadStringCompleted);

           if (DeviceNetworkInformation.IsNetworkAvailable == false)
            {
                MessageBox.Show("No network found, please check network availability and try again");
            }
            else if (compoundSearchBox.Text.Contains("?"))
                {
                    MessageBox.Show("\"?\" Not Permitted");
                    return;
                }
            else if (compoundSearchBox.Text != "")

                {

                    progBar1.IsIndeterminate = true;

                    string imageuri = "http://cactus.nci.nih.gov/chemical/structure/" + compoundSearchBox.Text + "/image?format=png&width=300&height=300";
                    string mwURI = "http://cactus.nci.nih.gov/chemical/structure/" + compoundSearchBox.Text + "/mw";

                    imgClient.OpenReadAsync(new Uri(@imageuri), imgClient);



                 mwClient.DownloadStringAsync(new Uri(@mwURI), mwClient);

 // //lower keyboard   
                this.Focus();

                }
                else MessageBox.Show("Enter Search Query");

        }

Я пытался реализовать следующую кнопку, но она не работает

private void buttonCancel_Click(object sender, RoutedEventArgs e)
    {
        imgClient.CancelAsync();
        mwClient.CancelAsync();
    }

, поскольку «имя mwClient не существует в текущем контексте»

Буду очень признателен, если кто-нибудь сможет дать какое-нибудь руководство

1 Ответ

2 голосов
/ 29 февраля 2012

Просто поместите двух клиентов в поля вашего класса.

...