Hiện tại tôi có một phần mã cần thực hiện khoảng 7 cuộc gọi dịch vụ web cho các nhà cung cấp khác nhau cho dữ liệu. Mỗi cuộc gọi mất một vài giây để thực hiện, vì vậy tôi muốn chạy chúng song song để tăng tốc độ.Sử dụng .Net Parallel Extensions (Parallel.Invoke) cho nhiều cuộc gọi không đồng bộ?
Tôi đã bao gồm 7 cuộc gọi của mình trong Parallel.Invoke hoạt động tốt khi chạy một vài thứ cùng một lúc, nhưng trên máy chủ 2 lõi, nó sẽ chỉ thực thi 2 lần, mỗi lần một lõi. Vì tất cả những gì tôi đang làm là chờ đợi xung quanh cho các cuộc gọi dịch vụ web để trả lại, tôi muốn nó tìm nạp tất cả 7 và đợi họ quay trở lại.
Không có cách nào để thực hiện việc này? Hoặc có lẽ cách tiếp cận của tôi là sai? Có lẽ tôi cần tạo các cuộc gọi không đồng bộ tới các dịch vụ web? Nhưng sau đó làm thế nào để chờ đợi cho họ tất cả trở lại trước khi tiếp tục?
Tôi có ấn tượng rằng anh ấy muốn tất cả chúng hoàn thành trước khi tiếp tục. –
@Steven: Anh ấy có thể làm gì thông qua Task.WaitAll - nhưng anh ấy có thể thực hiện công việc khác trong khi chờ đợi, nếu có, nếu đó là một tùy chọn. Các trường hợp như thế này, tuy nhiên, thường làm việc với Task.WaitAny, vì bạn thường có thể bắt đầu một số công việc ngay sau khi một số công việc hoàn thành - hiếm khi bạn cần 7 kết quả khác nhau để thực hiện bất kỳ việc xử lý nào ... –
Bạn đang đúng, điều này cũng sẽ hiệu quả và linh hoạt hơn những gì tôi đề xuất. –