"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > Async/في انتظار C#: متى تعود المهمة مقابل void؟

Async/في انتظار C#: متى تعود المهمة مقابل void؟

نشر في 2025-03-23
تصفح:954

Async/Await in C#: When to Return Task vs. Void?

إرجاع قيمة async طريقة في البرمجة غير المتزامنة C#: عند البرمجة بشكل غير متزامن باستخدام C#، يمكن أن تعود طريقة async هذا الاختيار أمر بالغ الأهمية لأنه يحدد سلوك الطريقة وكيفية تفاعله مع رمز الاتصال.

متى ستعود المهمة ] عادة ، عندما تريد فضح التقدم أو النتيجة لعملية غير متزامنة للمتصل ، يجب أن تعيد المهمة . يتيح ذلك للمتصل انتظار المهمة ومتابعة التنفيذ بعد اكتماله. يمكن أن تستخدم المهمة

أيضًا أنماط الاستثناء والأوضاع غير المتزامنة ، مثل async-foreach ، حيث يمكن مراقبة تقدم المهام المتعددة.

متى ستعود void ] الحالة المناسبة الوحيدة للعودة void من الطريقة

Async

هي عندما تحتاج صراحة إلى في هذه الحالات ، يجب ألا يكون المتصل قادرًا على انتظار هذه الطريقة ، و async

و

في انتظار غير مطلوبة. تجنب المستوى العلوي الأساليب المحددة async void لها دلالات خاصة ويجب استخدامها بحذر. وهي تمثل العمليات غير المتزامنة من المستوى الأعلى ولديها قواعد معالجة استثناءات مختلفة عن الأساليب التي تعيد المهام. يتم التعامل مع الاستثناءات في المستوى الأعلى طريقة void كاستثناءات غير معطلة ويمكن أن تؤدي إلى سلوك غير متوقع. على سبيل المثال ، فكر في الكود التالي:

public static async void asyncmethod2 (int num) { AWAIT TASK.FACTORY.STARTNEW (() => thread.sleep (num)) ؛ }

في هذه الحالة ، باستخدام

async void غير ضروري وقد يكون مشكلة لأن: يمنع المتصل من انتظار الطريقة ومراقبة تقدمه.

لن يتم التعامل مع الاستثناءات في طريقة

وقد تتسبب في تصرف التطبيق بشكل غير طبيعي.

public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}
وطريقة

في انتظار لضمان معالجة الاستثناء الصحيحة والحفاظ على القدرة على تتبع العمليات غير المتزامنة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3