تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

الأعراض

4.6 إطار عمل.NET إضافة قيمة نوع تعداد جديد، رونكونتينواتيونساسينتشرونوسلي، التعدادات تاسككومبليتيونسورسي و تاسككريتيونوبشنز . تفرض هذه القيمة المهام ليتم تشغيلها بشكل متزامن، وهذا يساعد على تجنب المواقف حالة توقف تام. ومع ذلك، تم اكتشاف مشكلة حيث يتم فيه تجاهل الخيار لبعض أنواع معينة من الاستمرار (وبخاصة عند الاستمرار في إنشاء Task.WhenAllأو Task.WhenAnyأو TaskExtensions.Unwrap ). لذلك، قد تعمل الاستمرار لا يزال بشكل متزامن.

يبين النموذج التالي المشكلة. إذا القيمة رونكونتينواتيونساسينتشرونوسلي تعمل بشكل صحيح، مؤشر الترابط بين معرفات يتم طباعة قد تكون هي نفسها، نظراً للاستمرار دائماً سيتقرر على مؤشرات ترابط مختلفة.

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 على إيجاد حل لتضمين في تحديثات مستقبلية.


هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×