2011-09-10 11 views
2

WebClientを使用して非同期HTTP GETリクエストを作成しようとしていますが、登録されたコールバックが呼び出されることはありません。私はまた、同期を試してみました、そしてそれは正常に働いた。私は間違って何をしていますか?WebClientのDownloadStringCompletedイベントハンドラが呼び出されません

WebClient asyncWebRequest; 
public AsyncWebRequest(Uri url) 
{ 
    asyncWebRequest = new WebClient(); 
    url = new Uri("http://www.google.com/"); 
    // string test = asyncWebRequest.DownloadString(url); // this works 
    asyncWebRequest.DownloadStringCompleted += new DownloadStringCompletedEventHandler(asyncWebRequest_DownloadStringCompleted); 
    asyncWebRequest.DownloadStringAsync(url); 
} 

void asyncWebRequest_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    throw new NotImplementedException(); 
} 
+3

私は推測しているあなたは、コンソールアプリでこれをテストし、あなたのダウンロードが完了する前に、 'Main'を終了していますか? – BrokenGlass

+0

Eh。ありがとう、これは問題でした。 – norbip

答えて

2

ダウンロードが完了する前にWebClientを処理した可能性があります。コード実行はasyncWebRequest.DownloadStringAsync(url);で停止せず、usingステートメントを閉じることによってWebClientオブジェクトを破棄しています。

WebClientasyncWebRequest_DownloadStringCompletedに配置してください。

結果

enter image description here

+0

質問のコードを更新しました。まだ動作していません。 – norbip

+0

ちょうどテストされたコード..それは動作します – Samich

+0

まあ、はい、問題は私がコンソールアプリケーションとしてそれをテストした、そしてこれが呼び出される前に終了したということでした。 (私の質問の最初のコメントを参照してください)。 – norbip

関連する問題