1

다행히도 당신을위한 쉬운 질문이지만 모두 정말 고민 중입니다. 방금 ​​프로그래밍을 시작했으며 WP7 앱 스토어에 인증 된 앱을 보유했지만 앱을 공개하기 전에 수정하고 싶은 버그를 직접 발견했습니다.취소 webclient 비동기 요청

기본적으로 사용자가 화학 이름을 입력하고 웹 서비스가 이미지와 분자량을 반환하는 검색 상자가 있습니다. 내가 원하는 것은 사용자가 다운로드가 완료되기 전에 페이지를 탐색하거나 이전에 완료되기 전에 새로운 검색이 수행되면 웹 클라이언트를 취소하는 것입니다 (현재 하나의 요청 만 가질 수 있다고 생각되면 현재 응용 프로그램이 다운됩니다). 이 같은

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

작동하지 않습니다

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"); 

     } 
나는 다음과 같은 버튼을 구현하는 시도

있지만 한 번?)에

"이름이 'mwClient'는 현재 컨텍스트에 존재하지 않습니다" 누구든지 제공 할 수 있다면 매우 감사 할 것입니다. 어떤 지침

+0

두 클라이언트를 클래스의 필드에 넣기 만하면됩니다. – svick

+0

@svick은 내가 예상했던 것보다 더 쉬웠다. 공개 부분 클래스를 추가했다. MWSearch : PhoneApplicationPage { private WebClient imgClient; 개인 웹 클라이언트 mwClient; ...... 그게 당신이 의미하는 것이 었나요? 많은 감사를 다시 – shadyamigo

답변

2

두 클라이언트를 클래스의 필드에 넣기 만하면됩니다.

+0

내가 본 가장 짧은 대답은 여기에 – fnc12