25/01/2010

Sử dụng task trong c#

 Đôi khi cần load 1 loạt xử lý tương tự nhau, ví dụ map 1 danh sách object A thành danh sách B

thay vì vòng lặp tuần tự, ta có thể dùng multi task để giảm thời gian hoàn thành tiến trình như sau:

//using System.Threading.Tasks;

List<objectDTO> objectDTOs = new List<objectDTO>();

try

{

//Lấy danh sách objects từ cơ sở dữ liệu

List<object> objects = await unitOfWork.objects.Getobjects(20);

//Danh sách không có item nào, hoàn thành tiến trình

if (objects == null || !objects.Any())

{

return objectDTOs;

}

//khởi tạo danh sách task bằng với danh sách objects

Task<objectDTO>[] taskArray = new Task<objectDTO>[objects.Count];

for (int i = 0; i < objects.Count; i++)

{

object item = objects[i];

//sử dụng hàm MapObjectToDTO(item) để thực hiện tiến trình map base object to DTO object

taskArray[i] = Task.Factory.StartNew(() => MapObjectToDTO(item));

}

//chờ toàn bộ task chạy xong

Task.WaitAll();


//đưa kết quả vào danh sách trả về

for (int x = 0; x < taskArray.Length; x++)

{

if (taskArray[x].Result != null)

{

objectDTOs.Add(taskArray[x].Result);

}

}

}

catch(Exception ex)

{

//xử lý exception

}

return objectDTOs;

Đăng ký tên miền, hosting, máy chủ, thiết kế lập trình website theo yêu cầu

 Chính thức trở thành đơn vị cung cấp dịch vụ đăng ký tên miền quốc tế, tên miền Việt Nam hosting, máy chủ, cloud hosting, cloud server, ema...