Áp dụng cho
.NET Framework 4.6.1

Triệu chứng

.NET Framework 4.6 vào enum gõ giá trị mới, RunContinuationsAsynchronously, TaskCompletionSource và TaskCreationOptions enums. Giá trị này áp dụng tác vụ để chạy không đồng bộ và điều này giúp tránh trường hợp gián đoạn. Tuy nhiên, sự cố đã được phát hiện, đối với một số loại cụ thể continuations (trong đặc biệt khi Task.WhenAll, Task.WhenAnyhoặc TaskExtensions.Unwrap tạo các continuations), tuỳ chọn sẽ bị bỏ qua. Do đó, continuations có thể vẫn chạy đồng bộ.Mẫu sau hiển thị các vấn đề. Nếu giá trị RunContinuationsAsynchronously đã hoạt động bình thường, hai luồng ID được in ra không bao giờ sẽ giống nhau, vì tiếp tục sẽ luôn được sắp xếp vào các chủ đề khác nhau.using System;using System.Threading;using System.Threading.Tasks;class Program{ static void Main() { var mres = new ManualResetEventSlim(); Console.WriteLine(Environment.CurrentManagedThreadId); var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); var t = Task.WhenAll(tcs.Task); t.ContinueWith(delegate { Console.WriteLine(Environment.CurrentManagedThreadId); mres.Set(); }, TaskContinuationOptions.ExecuteSynchronously); tcs.SetResult(true); mres.Wait(); }}

Giải pháp

Hiện không có giải pháp cho vấn đề này. Microsoft .NET Framework nhóm đang làm việc trên một giải pháp bao gồm trong bản Cập Nhật trong tương lai.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.