là có cách nào cho Tìm kiếm không đồng bộ trong C#? nơi id (s) sẽ được xử lý không đồng bộ bằng phương pháp này, thay vì sử dụng Parallel.ForEachTìm kiếm không đồng bộ
//This Gets all the ID(s)-IEnumerable <int>
var clientIds = new Clients().GetAllClientIds();
Parallel.ForEach(clientIds, ProcessId); //runs the method in parallel
static void ProcessId(int id)
{
// just process the id
}
nên một cái gì đó một foreach nhưng chạy không đồng bộ
foreach(var id in clientIds)
{
ProcessId(id) //runs the method with each Id asynchronously??
}
tôi đang cố gắng để chạy Chương trình trong Bảng điều khiển, nó sẽ đợi tất cả (các) id xử lý xong trước khi đóng Console.
Không chắc chắn những gì bạn đang yêu cầu ở đây. Tôi nghĩ rằng bạn đang yêu cầu một foreach đa luồng nhưng bạn không muốn sử dụng 'Parallel.ForEach' (đó là đa luồng)? – Igor
Vâng, hàm 'ProcessId' của bạn có đồng bộ trong ví dụ thứ 2 không? nó trả về một 'Task'? Bạn không thể chỉ "làm cho một hàm asyncronous" bạn phải viết nó asyncronously hoặc thực hiện nó trên một thread (như 'Parallel.ForEach' hiện) –
@Igor' Parallel.ForEach' không phải là không đồng bộ, nó đồng bộ xử lý các tác vụ song song . Ngoài ra nó không hỗ trợ async/await, vì vậy hãy cẩn thận trộn hai. –