مقالات بوسم «C#»
قائمة بالمقالات الموسومة بـ «C#» (64 مقالة)، من الأحدث إلى الأقدم.
-
الأنابيب المسمّاة عمليّاً ── IPC القياسيّ في Windows من التصميم إلى الأمان
دليل عمليّ للأنابيب المسمّاة، وسيلة الاتّصال القياسيّة بين العمليّات في Windows. ينظّم المقال، من المصادر الأوّليّة، الاختيار بين وضع البايت ووضع الرسالة، وت...
-
الإيقاظات الزائفة ── لماذا تستيقظ متغيّرات الشرط «دون إشعار» وكيف تنتظر بشكل صحيح على Windows
يمكن لانتظار متغيّر شرط أن يعود حتّى عندما لا يكون إشعار قد وصل (إيقاظ زائف). يشرح هذا المقال، من تنفيذ Windows، لماذا تسمح المواصفة بذلك، ويعرض الطريقة الصح...
-
أفضل الممارسات العمليّة لتعدّد مؤشّرات الترابط: نسخة .NET ── ما تقرِّره قبل إضافة مؤشّرات ترابط
قواعد تصميم عمليّة تمنع شيفرة .NET/C# متعدّدة مؤشّرات الترابط من الانهيار أو التجمّد أحياناً: اركب على Task بدل إنشاء المؤشّرات بنفسك، قلِّل الحالة القابلة ل...
-
استخدام WMI/CIM من C# وPowerShell ── دليل عمليّ لاسترجاع معلومات العتاد ومراقبة العمليّات والاستعلام عن بُعد
الإجابة الكلاسيكيّة للحصول على الرقم التسلسليّ للحاسوب، ومراقبة المساحة الحرّة على القرص، وكشف بدء عمليّة هي WMI/CIM. يشرح المقال أوامر CIM مثل Get-CimInstan...
-
أعماق إدخال/إخراج Windows (الجزء 4) ── مدير الذاكرة المؤقّتة: متى يصل WriteFile فعلاً إلى القرص؟
الجزء 4 من سلسلة تشرح مدير الذاكرة المؤقّتة في Windows بالرسوم. نرتّب الذاكرة المؤقّتة المنفَّذة كتعيين ملفّ، والقراءة الاستباقيّة والكتابة المؤجَّلة، والاخت...
-
التوافق الخلفي لواجهات DLL وCOM ── جدول قرار لتحديد أيّ تغيير يكسر جهة الاستدعاء
أيّ تغيير في مكوّنات DLL أو COM يكسر جهة الاستدعاء؟ نرتّب الطبقات الثلاث للتوافق -- البايناري، والمصدري، والسلوكي -- ونقدّم جدول قرار حسب نوع التغيير، والقاع...
-
إدارة إصدارات مخطّط قاعدة بيانات تطبيقات الأعمال ── ممارسات الترحيل (migration) لمنع «اختلاف قاعدة البيانات من عميل لآخر»
دليل عمليّ لإدارة إصدارات مخطّط قاعدة بيانات تطبيقات الأعمال الموزَّعة على عملاء متعدّدين. نشرح PRAGMA user_version وتنفيذ الترحيل الأماميّ (forward migratio...
-
CI/CD عمليّ لتطبيقات WinForms / WPF ── أتمتة من البناء إلى التوقيع والتوزيع عبر GitHub Actions
دليل عمليّ لبناء CI/CD لتطبيقات WinForms / WPF عبر GitHub Actions. يشمل YAML الأدنى للبناء + الاختبار على windows-latest، وترقيم الإصدار المدفوع بالوسم (tag)...
-
التعامل الآمن مع تطبيق أعمال قديم بلا اختبارات ── الممارسة العمليّة لاختبار التوصيف وإعادة الهيكلة
لإجراء تعديلات آمنة على تطبيق أعمال بلا اختبارات، نشرح خطوات اختبار التوصيف (أسلوب Golden Master) الذي يُثبِّت السلوك الحاليّ، وكيفيّة صنع نقاط التماسّ (seam...
-
عندما يُعامَل تطبيق Windows الذي طوّرته شركتك بوصفه فيروساً ── التعامل مع الكشف الخاطئ في Microsoft Defender والتعايش مع أثره على الأداء
نرتّب الإجراء الرسميّ عند كشف Microsoft Defender تطبيق Windows الذي طوّرته شركتك خطأً. نشرح آليّة برامج مكافحة الفيروسات الحديثة، والإبلاغ عن الكشف الخاطئ لـ...
-
السكون والإسبات وModern Standby والتطبيقات طويلة التشغيل ── منع «التوقّف في منتصف الليل» بالتصميم
نرتّب أسباب وصول تطبيقات Windows طويلة التشغيل إلى حالة «توقّفت عندما نظرت صباحاً»، انطلاقاً من الفرق بين سكون S3 والإسبات وModern Standby. نشرح سلوك المؤقّت...
-
هل تعمل تطبيقات الأعمال على Windows بإصدار Arm؟ ── واقع محاكاة x64 (Prism) ومكتبات DLL وCOM الأصليّة
نجيب المطوّرين ومسؤولي الأنظمة عن سؤال «هل تعمل تطبيقات الأعمال على Windows بإصدار Arm؟». نستعرض آليّة محاكاة x64 (Prism)، والطبقات التي لا تعمل مثل برامج ال...
-
MAX_PATH ومطبّات المسارات وأسماء الملفّات في Windows ── حدّ 260 حرفاً، الأسماء المحجوزة، النقطة الأخيرة، حساسيّة الأحرف
ننظّم مشكلات حدود المسارات وأسماء الملفّات، وهي سبب شائع لظهور «الملفّ غير موجود». نشرح تفاصيل MAX_PATH=260 حرفاً، وتفعيل المسارات الطويلة عبر LongPathsEnabl...
-
مطبّات محرك الشبكة ومسار UNC ── الممارسة العمليّة للتعامل مع خادم الملفّات (المجلّد المشترك) في تطبيقات الأعمال
نرتّب الأعطال الشائعة عند إخراج البيانات إلى مجلّد مشترك أو مراقبته من تطبيق أعمال. نشرح سبب عدم ظهور حرف القرص (Z:) من الخدمة، والصلاحيّات المطلوبة لكلّ حسا...
-
أيقونات علبة النظام والإشعارات المنبثقة في تطبيقات Windows — مزالق NotifyIcon وكيفية اختيار AppNotification المناسب
دليل عملي لإبقاء تطبيق Windows الخاص بالأعمال مقيمًا في علبة النظام (منطقة الإشعارات) وإخطار المستخدم عبر الإشعارات المنبثقة (Toast). يتناول الاستخدام الصحيح...
-
إلى متى ستستمرّ تطبيقات VB6 في العمل ── وضع دعم بيئة التشغيل والمسار العمليّ للترحيل إلى .NET
إلى متى تستمرّ تطبيقات VB6 في العمل؟ يُنظّم هذا المقال التناقض بين سياسة دعم بيئة تشغيل VB6 (المدعومة حتّى على Windows 11) وحقيقة انتهاء دعم بيئة التطوير (ID...
-
معالجة التقويم الياباني والعطلات الرسمية وتاريخ الإغلاق في تطبيقات الأعمال — تصميم مقاوم لتغيّر العصر، وJapaneseCalendar، وحساب أيام العمل في الممارسة العملية
عرض «ريوا 8» في تقرير رسمي، وحساب أيام العمل باستثناء العطلات الرسمية، والدفع في آخر يوم عمل من الشهر التالي لإغلاق يقع في اليوم العشرين — تحمل معالجة التوار...
-
تعدد اللغات في تطبيقات WinForms/WPF ── الممارسة العملية لملفات resx وتجميعات الأقمار الصناعية (Satellite Assemblies) وتبديل الثقافة (Culture)
نستعرض من منظور عملي تعدد اللغات في تطبيقات سطح المكتب على Windows، بما في ذلك الفرق بين CurrentCulture وCurrentUICulture، وآلية الموارد عبر resx وتجميعات ال...
-
ملف CSV ليس مجرد نص عادي ── الممارسة العملية لملفات CSV في تطبيقات C# (ترميز الأحرف وتوافق Excel والحماية من الحقن)
نستعرض بمنظور عملي الأنماط النموذجية للأعطال في إدخال وإخراج CSV بتطبيقات الأعمال ── التحليل اليدوي باستخدام Split(',')، وتشوّه النصوص في Excel بسبب UTF-8 بد...
-
لا تُحِط HttpClient بـ using ── الممارسة العمليّة للاتّصال عبر HTTP في تطبيقات C# للأعمال (أنماط الإنشاء، وضبط المهلة، وإعادة المحاولة)
إنشاء HttpClient داخل using في كلّ مرّة يؤدّي إلى استنزاف المقابس (sockets)، وجعله static يجعله لا يتابع تغيّر DNS ── نشرح آليّة هاتين المشكلتين الكبيرتين، و...
-
تحديد سبب «البطء» باستخدام PerfView وdotnet-trace ── مدخل عمليّ لتحقيق أداء .NET
عندما يصبح تطبيق الأعمال «بطيئاً» أو «يستهلك المعالج بالكامل»، ما الأداة التي تستخدمها وما الذي تنظر إليه؟ ننظِّم توزيع الأدوار بين PerfView وdotnet-trace، و...
-
مدخل إلى سجلّ أحداث Windows وETW ── وضع سجلّات تطبيق الأعمال على آليّة نظام التشغيل القياسيّة
سجلّ الأحداث وETW طبقتان مختلفتان يراهما القائمون على التشغيل وأدوات نظام التشغيل القياسيّة. نشرح كيفيّة التمييز بين الوسائل الثلاث بما فيها سجلّ الملفّات، و...
-
ليس appsettings.json وحده ── الممارسة العمليّة لإدارة الإعدادات في تطبيقات Windows للأعمال (الإعدادات حسب البيئة، المعلومات السرّيّة، وجهة الكتابة)
نُنظّم هنا إدارة الإعدادات لتطبيقات Windows للأعمال. نشرح تدرّج appsettings.json، والتمييز بين IOptions/IOptionsMonitor، والإعدادات حسب البيئة، وأماكن حفظ ال...
-
الطباعة وإخراج PDF في تطبيقات أعمال Windows ── كيفيّة الاختيار بين System.Drawing.Printing وWPF ومكتبات التقارير
نرتّب عبر جدول قرار حسب المتطلّبات طباعة WinForms باستخدام PrintDocument، وطباعة FlowDocument/FixedDocument في WPF، وخيارات إخراج PDF. ونشرح حتّى التحكّم بفو...
-
فهم نموذج OSI حقًا — تشريح طلب HTTP واحد إلى طبقاته السبع
نفهم نموذج OSI من خلال التجربة الفعلية بدلًا من الحفظ. نقوم بتجميع وتشريح إطار Ethernet الذي يحمل طلب HTTP GET واحدًا باستخدام C#، ونتحقق عبر تفريغ سداسي عشر...
-
كيف تفهم عزل الجلسات في Windows — Session 0 وRDP وتشغيل عدة مستخدمين في وقت واحد
يوضح هذا المقال مفهوم «الجلسة» (session) في Windows، وهو موضوع يسبب ارتباكًا مستمرًا لمطوري تطبيقات Windows. يتناول المقال سبب وجود عزل Session 0 (ولماذا لا ...
-
قراءة ملفّات تفريغ الأعطال عبر WinDbg + SOS ── مدخل عمليّ للتحليل بعد الجمع
نشرح خطوات قراءة ملفّات تفريغ أعطال Windows باستخدام WinDbg وامتداد SOS. نغطّي ضبط مسار الرموز (symbol path)، وطريقة تتبّع الاستثناءات وتسريبات الذاكرة عبر !...
-
منع التشغيل المتعدّد لتطبيقات Windows ── Mutex المسمّى وتفعيل النافذة عند التشغيل المزدوج
نرتّب هنا طريقة تنفيذ منع التشغيل المتعدّد لتطبيقات Windows للأعمال باستخدام Mutex مسمّى. نشرح الفرق بين Global\ وLocal\ ومطبّاته في بيئات RDP، وAbandonedMut...
-
استدعاء Win32 API بأمان من C# ── دليل P/Invoke العمليّ (DllImport / LibraryImport / CsWin32)
نُنظِّم النقاط العمليّة لاستدعاء Win32 API من C# عبر P/Invoke. الفرق بين DllImport وLibraryImport، والتوليد التلقائيّ عبر CsWin32، ومطبّات ترحيل السلاسل النص...
-
دمج مصادقة Entra ID في تطبيقات WinForms/WPF ── التشكيل العمليّ لـ MSAL.NET ووسيط WAM
نُنظّم خطوات دمج مصادقة Entra ID في تطبيقات WinForms/WPF لسطح المكتب. نشرح مفهوم العميل العامّ، وتسجيل التطبيق، وAcquireTokenSilent في MSAL.NET، ووسيط WAM، و...
-
التاريخ والوقت والمناطق الزمنية في تطبيقات الأعمال ── من فخاخ DateTime إلى مبدأ التخزين بتوقيت UTC وتصميم الاختبارات
ينزاح الوقت 9 ساعات بعد نقل الخادم ── نرتّب أسباب أعطال التاريخ والوقت انطلاقًا من خاصيّة Kind في DateTime والتحويل الضمنيّ. نشرح التمييز بين استخدام DateTim...
-
الاختبار الآليّ لواجهة المستخدم في تطبيقات سطح مكتب Windows ── آليّة UI Automation وبناء اختبارات لا تنكسر بسهولة باستخدام FlaUI
نرتّب الاختبار الآليّ لواجهة المستخدم في تطبيقات WinForms/WPF انطلاقاً من آليّة عمل Windows UI Automation. نشرح التنفيذ الأدنى عبر FlaUI، وتصميم AutomationId...
-
التعامل مع الدقّة العالية (DPI) في WPF ── أسباب الضبابيّة والتلطّخ رغم أنّه «يُفترَض أن يكون محصّناً ضدّ DPI» وطرق العلاج
WPF مصمَّم بحيث يعي System DPI، لكن نقل النافذة إلى شاشة بدقّة DPI مختلفة يجعل الشاشة كلّها تتلطّخ، وتصبح الصور النقطيّة ضبابيّة. نُنظّم تشخيص السبب، ودعم Pe...
-
مشكلة بقاء EXCEL.EXE عند التعامل مع Excel من C# ── أنماط تحرير مراجع COM وقرار الاستبدال
نُنظّم مشكلة بقاء عمليّة EXCEL.EXE عند تشغيل Excel عبر COM من C#، انطلاقاً من آليّة عدّ مراجع COM وRCW. نشرح مطبّ «قاعدة النقطتين»، وأنماط التحرير عبر Releas...
-
دعم الدقّة العالية (High DPI) في WinForms ── أسباب النِّيَة والانكسار على شاشات 4K ومعالجتها الواقعيّة
نرتّب هنا أسباب نِيَة وانكسار تطبيقات WinForms على شاشات 4K، انطلاقاً من مفهومَي الافتراض الوهميّ لـ DPI (DPI Virtualization) وأوضاع إدراك DPI (System Aware ...
-
كيف تختار وسيلة الاتّصال بين عمليّات Windows ── جدول قرار للأنابيب المسمّاة / TCP / gRPC / الذاكرة المشتركة / COM
كيف تختار وسيلة التواصل بين تطبيقات Windows؟ ننظّم في جدول قرار مجالات تفوّق ومطبّات الأنابيب المسمّاة، وTCP المحليّ، وgRPC، والذاكرة المشتركة، وتكامل الملفّ...
-
استخدام SQLite في تطبيقات C# للأعمال ── وضع WAL، والتحكّم الحصريّ، والوقاية من التلف، والتمييز عن EF Core
نرتّب هنا المعرفة العمليّة اللازمة لدمج SQLite في تطبيقات الأعمال عبر Microsoft.Data.Sqlite. نشرح وضع WAL، وSQLITE_BUSY وتوحيد مسار الكتابة، ومطبّات تخطيط ال...
-
كيفيّة إنشاء خدمات Windows وتشغيلها ── من التمييز عن جدولة المهام إلى تحويل BackgroundService إلى خدمة
هل ينبغي تحويل المعالجة المقيمة إلى خدمة Windows، أم تكفي جدولة المهام؟ نرتّب من منظور عمليّ جدول القرار، وكيفيّة إنشاء الخدمة عبر .NET Worker Service، وحساب...
-
كيف تختار مكان حفظ بيانات تطبيق Windows محليّاً ── جدول قرار بين SQLite وJSON وRegistry وAccess
أين ينبغي حفظ بيانات تطبيق سطح مكتب Windows، وبأيّ صيغة؟ نرتّب الفرق بين AppData وProgramData، ونقاط قوّة وعيوب كلّ من SQLite وملفّات JSON وRegistry وAccess ...
-
PDB (قاعدة بيانات البرنامج) ما هي؟ ── فهم معلومات التصحيح والرموز (symbols) وSource Link
نُنظّم من منظور عمليّ ما هو PDB (Program Database / قاعدة بيانات البرنامج)، وما الذي يحتويه وما لا يحتويه، والعلاقة بين Debug / Release، وPortable PDB، وSour...
-
ما هو Roslyn ── قراءة شيفرة C# وإصلاحها وتوليدها من منظور المُصرِّف (compiler)
نرتّب هنا نظرة عامّة على Roslyn (.NET Compiler Platform)، وSyntax Tree، وSemanticModel، وWorkspace، وAnalyzer، وSource Generator، ومواضع استخدامها في العمل ا...
-
التعهيد الخارجي والتطوير التعاقدي لتطبيقات Windows: ما ينبغي تنظيمه قبل الطلب
قبل تكليف جهة خارجية بتطوير تطبيق Windows تعاقديّاً، إليك النقاط التي ينبغي تنظيمها: تعديل البرمجيّات القائمة، وتكامل الأجهزة، وCOM/ActiveX، والتوزيع/التحديث...
-
استخدام الأنواع الجبرية للبيانات (Algebraic Data Types) في .NET Framework / .NET ── تصميم يعبّر عن الحالة والنتيجة بالنوع
نرتّب طرق استخدام الأنواع الجبرية للبيانات، وبخاصّة الأنواع الاتحادية (sum types) والاتحادات المُميَّزة (discriminated unions)، في .NET Framework وNET، ومزاي...
-
التعامل الصحيح مع رموز انتحال الهوية في Windows ── استعارة الصلاحيّات على مستوى مؤشّر الترابط والعودة الآمنة
حول رموز انتحال الهوية في Windows، نستعرض طريقة التفكير اللازمة للتعامل الآمن معها في العمل الفعليّ، بدءاً من رمز الوصول ورمز العمليّة الأساسيّ ورمز مؤشّر ال...
-
المفهوم الخاطئ بأنّ الاستقبال يتطابق مع وحدة الإرسال في TCP ── تصميم الاستقبال بالتعامل مع TCP كتدفّق بايتات
في اتّصالات TCP، إن افترضنا أنّ البيانات تُستقبَل بنفس وحدات الإرسال (Send أو Write) فقد يحدث تجزّؤ ودمج وتشوّه للنصوص وتلف في البروتوكول. نستعرض فكرة التعام...
-
التمييز بين انتظار GC وتسريب الذاكرة في .NET ── الإجراء العمليّ لمراقبة الذاكرة المتزايدة ومقارنتها وإثباتها
نُنظّم هنا الإجراء الذي يُميّز، في تطبيقات .NET، بين كون سبب تزايد الذاكرة هو انتظار جمع القمامة (garbage collection) أو تسريب ذاكرة حقيقيّ، باستخدام dotnet-...
-
طريقة تشغيل PowerShell من C# (CSharp) واستقبال النتيجة ككائن
نرتّب من منظور عمليّ طريقة تشغيل PowerShell من C# واستقبال النتيجة ككائن PSObject بدل نصّ، بدءًا من PowerShell SDK وAddCommand وAddParameter وBaseObject وPro...
-
إلى أين ينتهي unit test وأين يبدأ integration test - دليل عمليّ لرسم الحدّ الفاصل
دليل عمليّ يميّز unit test وintegration test بأربعة أسئلة: نتحقّق من منطقنا أم من الغراء، ويبقى المعنى مع fake، وما طبيعة الاعتماد، ومدى الحاجة إلى السرعة.
-
قائمة تحقّق للتعامل الآمن مع child processes في تطبيقات Windows - Job Objects ونشر الـ exit وstdio وتصميم الـ watchdog
دليل تصميم متكامل للتعامل الآمن مع child processes في تطبيقات Windows عبر Job Objects ونشر الـ exit وتصريف stdio ووضع الـ watchdog خارج الشجرة المراقبة لمنع ...
-
مزالق تطبيقات serial communication - framing وtimeouts وflow control وreconnects ومحوّلات USB وتجمّد الـ UI
ملخّص عمليّ لمزالق تطبيقات serial communication على Windows: framing وtimeouts وflow control وreconnects ومحوّلات USB-to-serial وتجمّد الـ UI، مع ممارسات تخف...
-
أيّها نختار من بين Windows Forms وWPF وWinUI - جدول قرار للتطوير الجديد، الأصول القائمة، التوزيع، والتعبير عن الـ UI
هذا المقال يُنظّم اختيار WinForms أو WPF أو WinUI من زاوية الأصول القائمة والتوزيع وقدرة التعبير في الـ UI، ويُقدّم جدول قرار عمليّاً يُساعد القرّاء على حسم ...
-
المزالق وأفضل الممارسات عند استخدام shared memory - تنظيم مسبق للتزامن، الرؤية، العمر، ABI، والأمان
نُلخّص أبرز المزالق عند استخدام shared memory ونصمّم للتزامن، الرؤية، العمر، ABI، والاستعادة، حتّى يبني القارئ تكاملاً ثابتاً منخفض الأعطال.
-
كيف تقيس وتقارن سرعة لغات البرمجة المختلفة - دليل عمليّ لمقارنة C# / C++ / Java / Go تحت الشروط نفسها
إطار عمليّ لمقارنة سرعة C# و C++ و Java و Go بإنصاف: تحديد ما تقيسه، توحيد بيئة التشغيل، التعامل مع warm-up و JIT و GC، وقراءة الإحصاءات بدل الاكتفاء برقم وا...
-
كيف تستخدم DLL الخاصّة بـ .NET 8 من VBA بـ early binding عبر COM و dscom
دليل عمليّ لربط VBA بـ .NET 8 عبر COM hosting وتوليد TLB بـ dscom واستخدام early binding مع types صريحة، حتى تستعيد IntelliSense وتتجنّب فخّ bitness.
-
ما الذي يجب التحقّق منه قبل ترحيل .NET Framework إلى .NET - قائمة تحقّق عمليّة لما قبل الترحيل
قائمة عمليّة لما قبل ترحيل .NET Framework إلى .NET: جرد المشاريع وفحص WCF و Web Forms و EF6 و NuGet لتجنّب المفاجآت قبل بدء التنفيذ.
-
ما هو .NET Generic Host - شرح DI والإعدادات والـ logging و BackgroundService
مقدمة عمليّة إلى .NET Generic Host وكيف يجمع DI والإعدادات والـ logging و BackgroundService في تطبيقات console و worker، مع متى يفيد فعلاً ومتى يكون استخداما...
-
ما هو Native AOT في .NET - الفروق عن JIT و ReadyToRun و trimming
شرح Native AOT في .NET كنموذج نشر يقدّم الترجمة الأصليّة، مع الفروق عن JIT و ReadyToRun و trimming، والأنسب أن يكون أدوات CLI و workers و APIs صغيرة بدل WPF ...
-
كيف نختار بين PeriodicTimer و System.Threading.Timer و DispatcherTimer - تنظيم العمل الدوريّ في .NET أوّلاً
دليل عمليّ لاختيار المؤقّت الأنسب في .NET بين PeriodicTimer وSystem.Threading.Timer وDispatcherTimer وفق سياق التنفيذ ونموذج المعالجة وضمانات التوقيت.
-
كيف نُحوِّل C# إلى native DLL باستخدام Native AOT - استدعاء exports من نوع UnmanagedCallersOnly من C/C++
يوضِّح هذا المقال كيف نُصدر مكتبة C# بوصفها native DLL عبر Native AOT، ونكشف نقاط دخول UnmanagedCallersOnly تُستدعى مباشرةً من C أو C++ بحدّ API ثابت ومتين.
-
لماذا يستحقّ الأمر إدخال Generic Host / BackgroundService إلى تطبيق سطح المكتب - يصبح تنظيم البدء والـ lifetime والـ graceful shutdown أسهل بكثير
يشرح هذا المقال متى يستحقّ إدخال Generic Host و BackgroundService إلى تطبيقات سطح المكتب على Windows لتنظيم البدء وإدارة الـ lifetime والإيقاف الآمن للعمل ال...
-
async/await و UI thread في WPF / WinForms في صفحة واحدة - أين تعود الاستكمالات، و Dispatcher، و ConfigureAwait، ولماذا تتعطّل .Result / .Wait()
شرح عمليّ موجز للعلاقة بين async / await و UI thread في WPF و WinForms، يوضّح أين تستأنف الاستكمالات، ودور Dispatcher و ConfigureAwait، وسبب تجمّد الواجهة عن...
-
كيفيّة استخدام FileSystemWatcher بأمان - الأحداث المفقودة والإشعارات المكرّرة وفخاخ كشف الاكتمال
دليل عمليّ يشرح لماذا ينبغي اعتبار FileSystemWatcher مجرّد محفّز للمسح وليس إشارة اكتمال، ويقدّم أنماط المطالبة الذرّيّة و idempotency.
-
أفضل الممارسات لـ C# async/await - جدول قرار لـ Task.Run و ConfigureAwait
دليل عمليّ لـ async/await في C# يبدأ بفصل عمل I/O-bound عن CPU-bound، ثمّ يقدّم جداول قرار حول Task.Run و WhenAll و ConfigureAwait و fire-and-forget لتختار ا...
-
لماذا يكون غلاف C++/CLI في الغالب أفضل طريقة لاستخدام native DLL من C# - مقارنة عمليّة مع P/Invoke
يوضح المقال متى يكون P/Invoke كافياً ومتى يصبح غلاف C++/CLI رفيعاً الخيار الأنظف لاستدعاء native DLL من C#، مع أمثلة عمليّة.