นำไปใช้กับ
.NET Framework 4.6.1

อาการ

4.6 กรอบงาน.NET ที่เพิ่ม enum ชนิดค่าใหม่RunContinuationsAsynchronously, enums TaskCompletionSourceและTaskCreationOptions ค่านี้เป็นบังคับงานให้ทำงานแบบอะซิงโครนัส และซึ่งช่วยหลีกเลี่ยงสถานการณ์การชะงักงัน อย่างไรก็ตาม พบประเด็นที่ สำหรับบางชนิดที่เฉพาะเจาะจงของ continuations (ในเฉพาะเมื่อTask.WhenAll, Task.WhenAnyหรือTaskExtensions.Unwrapสร้างแบบ continuations), ตัวเลือกจะถูกละเว้นไป ดังนั้น continuations อาจยังคงทำงานพร้อมกันตัวอย่างต่อไปนี้แสดงปัญหา ถ้าค่าRunContinuationsAsynchronouslyได้ทำงานอย่างถูกต้อง เธรดสองรหัสที่พิมพ์ออกไปจะไม่เหมือน เนื่องจากจะสามารถจัดกำหนดการการที่ต่อเนื่องบนเธรดอื่นเสมอกัน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(); }}

การแก้ปัญหา

ไม่มีวิธีแก้ปัญหาสำหรับปัญหานี้มีอยู่ในขณะนี้ ทีม Microsoft .NET Framework ไม่มีปัญหาในการแก้ไขปัญหาการรวมไว้ในการปรับปรุงในอนาคต

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ