2010-08-16 13 views

답변

1

오히려 호 WebClient.DownloadStringAsync(Uri)보다는 두번째 파라미터로 전달 Uri 과부하, DownloadString(Uri, Object) 전화. 그런 다음 이벤트 핸들러에서 e.UserToken 값을 Uri으로 변환하여 값을 검색 할 수 있습니다. 즉,

Uri uri = new Uri("http://example.com"); 
WebClient client = new WebClient(); 
client.DownloadStringCompleted = StringDownloaded; 
client.DownloadStringAsync(uri, uri); 


void StringDownloaded(object sender, DownloadStringCompletedEventArgs e) 
{ 
    Uri uri = (Uri)e.UserToken; 

    ... 
} 

이 기술을 사용하여 모든 종류의 상태를 이벤트 처리기에 전달할 수 있습니다.

+0

늦게 답장을 보내 주셔서 죄송합니다. Uri로 UserState 속성을 캐스팅하고 DownloadStringAsync를 오버로드하면 UserToken이 완벽하게 작동합니다 (UserToken을 볼 수 없음). 건배 – Ash

1
(e.Error.Response as HttpWebResponse).ResponseUri 
+0

을하지만 리디렉션이있는 경우 요청 된 열린 우리당과 다를 수 ResponseUri되지 않습니다

이 작동 즉? –

1

Jim Mischel의 대답에 대한 Ash의 의견은 e.UserState (e.UserToken은 DownloadStringCompletedEventArgs 개체에 존재하지 않음)에서 이벤트 처리기 함수에서 DownloadStringAsync에 전달 된 UserToken이 액세스 할 수 있다는 것입니다.

Uri uri = new Uri("http://example.com"); 
WebClient client = new WebClient(); 
client.DownloadStringCompleted = StringDownloaded; 
client.DownloadStringAsync(uri, uri); 


void StringDownloaded(object sender, DownloadStringCompletedEventArgs e){ 
    Uri uri = (Uri)e.UserState; 
    ... 
} 
관련 문제