Lấy dữ liệu thông qua WebClient.DownloadString() trong C# rất chậm
Mình dùng lệnh select để lấy hết dữ liệu trong 1 bảng của csdl MSSQL và đẩy nó vô DataTable. Sau đó dùng phương thức DownloadString để đẩy tất cả dữ liệu vừa lấy được lên 1 Server sử dụng MySQL.
Chương trình chạy ok. Nhưng có vấn đề là là tới bước gửi dữ liệu lên server không hiểu sao 1 lần nó chỉ được mấy trăm dòng.
Trong cái DataTable của mình có 5000 dòng thì mình phải chạy chừng 6-7 lần nó mới add vô hết được.
Phải tắt chương trình mở lại, tắt - mở lại. Thì nó mới gửi được hết dữ liệu.
Tại sao chương trình không gửi được hết dữ liệu trong DataTable, mình để debug ngay chỗ foreach mà nó không trả exception gì. Nhưng rất lâu.
Mình nghĩ vấn đề ở chỗ phương thức WebClient.DownloadString.
Dưới đây là đoạn code của mình:
DataTable dta = ListData();
foreach (DataRow r in dta.Rows)
{
try
{
using (WebClient wcd = new WebClient())
{
string result = wcd.DownloadString(link + "&cmd=IMPORT&CardID=" + r["CardID"] + "&StaffID=" + r["StaffID"] + "&TransDT=" + r["TransDT"]);
Thread.Sleep(80);
}
}
catch { }
count++;
}