2012-11-22 3 views
0

새로운 HttpClient 클래스를 사용하여 서버에 일부 데이터를 업로드하므로 await/async와 같은 새로운 연산자를 사용해야합니다. 나는 다음과 같은 문제가있다 : 첫 번째 파일이 업로드 될 때까지 그리고 다음번 파일로 이동할 때까지 호출자 스레드를 어떻게 차단할 수 있는가? 내 문제에 대한 관심을대기중인 연산자 다음에 호출자 스레드를 차단하는 방법

public async Task Upload(string filename) 
    { 
     HttpRequestMessage message = new HttpRequestMessage(); 

     StreamContent streamContent = new StreamContent(new FileStream(filename, FileMode.Open)); 
     message.Method = HttpMethod.Put; 
     message.Content = streamContent; 
     message.RequestUri = new Uri(webURI); 

     HttpResponseMessage response = await httpClient.SendAsync(message); 

     //I want to reach this point untill I will start to upload next file 
     if (response.IsSuccessStatusCode) 
     { 
      //do something 
     } 


    } 

    void uploadFiles() 
    { 
     foreach (string filename in filenames) 
     { 
      Upload(filename); 
     } 
    } 

감사합니다. 당신이 다음 파일을 업로드하기 전에 업로드가 완료되었음을

답변

1

await :

async void uploadFiles() 
{ 
    foreach (string filename in filenames) 
    { 
     await Upload(filename); 
    } 
} 
+0

덕분에,이 내가 검색 한 것입니다. 예를 들면 UploadFolder()와 UploadFiles()를 호출하는 UploadFolder()와 UploadFolder()와 UploadFiles()에 연산자를 대기시켜야합니다. – Vlad

+0

모든 업로드가 끝났을 때를 알고 싶다면'async void uploadFiles()'를'async Task uploadFiles()','await uploadFiles();'로 변경하십시오. – dtb

관련 문제