2009-06-11 21 views

Respuesta

18

WebClient.UploadFileAsync le permitirá hacer esto.

WebClient webClient = new WebClient(); 
webClient.UploadFileAsync(address, fileName); 
webClient.UploadProgressChanged += WebClientUploadProgressChanged; 

...

void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
{ 
     Console.WriteLine("Upload {0}% complete. ", e.ProgressPercentage); 
} 

Obsérvese que la rosca no bloqueará en Cargar más, así que le recomiendo usar:

webClient.UploadFileCompleted += WebClientUploadCompleted; 

...

void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e) 
{ 
    // The upload is finished, clean up 
} 
+0

Gracias. Estoy trabajando con multihebra, la carga de archivos ya se está ejecutando en un hilo diferente. Entonces, ¿debería usar el método Uploadfile o el método UploadfileAsync? –

+0

Aún necesitará UploadFileAsync Me temo que el hilo se bloqueará en una llamada a UploadFile para que esos eventos nunca se llamen. Puede volver a crear su propio bloqueo configurando un indicador bool cuando comience la carga, reinícielo en uploadcomplete, luego thread.sleep hasta que se borre el indicador. –

+0

nota: '' El evento 'UploadProgressChanged''' no funciona bien con el método' '' UploadDataAsync''' –

2

Agregue su controlador de eventos a WebClient.UploadProgressChanged y llama a WebClient.UploadFileAsync.

Consulte la documentación de WebClient.UploadProgressChanged para ver un ejemplo.

Cuestiones relacionadas