tôi có mã ví dụ này:ContinueWith Chaining không làm việc như mong đợi
static void Main(string[] args) {
var t1 = Task.Run(async() => {
Console.WriteLine("Putting in fake processing 1.");
await Task.Delay(300);
Console.WriteLine("Fake processing finished 1. ");
});
var t2 = t1.ContinueWith(async (c) => {
Console.WriteLine("Putting in fake processing 2.");
await Task.Delay(200);
Console.WriteLine("Fake processing finished 2.");
});
var t3 = t2.ContinueWith(async (c) => {
Console.WriteLine("Putting in fake processing 3.");
await Task.Delay(100);
Console.WriteLine("Fake processing finished 3.");
});
Console.ReadLine();
}
Giao diện điều khiển đầu ra baffles tôi:
- Đưa vào chế biến giả 1.
- chế biến Fake xong 1.
- Đưa vào chế biến giả 2.
- Đưa vào chế biến giả 3. xử lý
- Fake xong 3.
- chế biến Fake xong 2.
Tôi cố gắng để chuỗi nhiệm vụ để họ thực hiện cái khác, những gì tôi làm sai? Và tôi không thể sử dụng chờ đợi, đây chỉ là mã ví dụ, trong thực tế, tôi đang xếp hàng các tác vụ đến (một số không đồng bộ, một số không) và muốn thực thi chúng theo thứ tự mà chúng đến nhưng không có song song, ContinueWith có vẻ tốt hơn việc tạo một ConcurrentQueue và xử lý everythning bản thân mình, nhưng nó chỉ không hoạt động ...
tuyên bố chờ đợi "chia tách" tác vụ. Vì vậy, t1 chỉ tham khảo nửa đầu. Tôi ngạc nhiên Đưa vào xử lý giả 2 không xảy ra ngay lập tức sau khi đưa vào xử lý giả 1 –
@WeylandYutani Tôi giải thích trong câu trả lời của tôi tại sao điều đó không xảy ra. – Servy
thực sự tôi đang nói rác một lần nữa vì vậy bỏ qua tôi –