2009-06-11 42 views

Trả lời

18

WebClient.UploadFileAsync sẽ cho phép bạn thực hiện việc này.

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

...

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

Lưu ý rằng các chủ đề sẽ không chặn trên Tải lên nữa, vì vậy tôi khuyên bạn nên sử dụng:

webClient.UploadFileCompleted += WebClientUploadCompleted; 

...

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

Cảm ơn. Tôi đang làm việc với đa luồng, việc tải lên tệp đã chạy trên một chuỗi khác. Vậy tôi có nên sử dụng phương thức Uploadfile hoặc phương thức UploadfileAsync không? –

+0

Bạn vẫn cần UploadFileAsync Tôi sợ, chuỗi sẽ chặn cuộc gọi đến UploadFile để những sự kiện đó sẽ không bao giờ được gọi. Bạn có thể tạo lại chặn của riêng mình bằng cách đặt cờ bool khi bạn bắt đầu tải lên, đặt lại nó ở chế độ tải lên hoàn chỉnh, sau đó là luồng .tất cả cho đến khi cờ bị xóa. –

+0

lưu ý: '' 'Sự kiện UploadProgressChanged''' không hoạt động tốt với phương thức' '' UploadDataAsync''' –

2

Thêm trình xử lý sự kiện của bạn vào WebClient.UploadProgressChanged và gọi WebClient.UploadFileAsync.

Xem tài liệu WebClient.UploadProgressChanged để biết ví dụ.

Các vấn đề liên quan