取消webclient异步请求

时间:2012-02-28 19:46:44

标签: c# silverlight windows-phone-7 webclient windows-phone-7.1

希望对你们来说一个简单的问题,但我真的很挣扎。 我刚刚开始编程并且刚刚在WP7应用程序商店中获得了一个应用程序认证,但在将应用程序公开之前我自己发现了一个我想修复的错误。

基本上我有一个搜索框,用户输入化学名称,网络服务返回图像及其分子量。我想要做的是取消webclient,如果用户在下载完成之前导航离开页面,或者在上一次完成之前进行了新的搜索(这会使应用程序崩溃,因为我认为你只能有一个请求一次?? ??

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();
    }

as“名称'mwClient'在当前上下文中不存在”

如果有人能提供一些指导,我将非常感激

1 个答案:

答案 0 :(得分:2)

只需将两个客户端放入班级中的字段即可。