مقالات بوسم «C#»
قائمة بالمقالات الموسومة بـ «C#» (66 مقالة)، من الأحدث إلى الأقدم.
-
لماذا تتعطّل الوسائط ── قواعد وسائط سطر أوامر Windows
في Windows لا توجد مصفوفة وسائط؛ يصل إلى CreateProcess سلسلة واحدة ويتولّى الطرف المستقبل تقسيمها. نشرح قواعد CommandLineToArgvW وCRT و.NET، وArgumentList، و...
-
انتهاء خدمة برامج تشغيل الطابعات في Windows ── كيف تستعد تطبيقات الأعمال لطباعة التقارير والملصقات
تُنهى Microsoft تدريجيّاً خدمة برامج تشغيل الطابعات v3/v4، ومن تمّوز/يوليو 2026 يُفضَّل برنامج تشغيل فئة IPP. نرتّب في جداول قرار ما يختفي في Windows protect...
-
ما الذي يبقى بعد موت الأب ── تربية العمليات الابنة في كائن Job
لماذا يبقى مساعد SDK ماسكاً الكاميرا أو منفذ COM بعد إنهاء الواجهة قسراً. كيف تجعل كائن Job شجرة العمليات وحدة واحدة وتصمم عمر العملية الابن بـ KillOnJobClos...
-
الأنابيب المسمّاة عمليّاً ── IPC القياسيّ في Windows من التصميم إلى الأمان
دليل عمليّ للأنابيب المسمّاة، وسيلة IPC القياسيّة في Windows. يغطّي وضع البايت مقابل وضع الرسالة، وخوادم متعدّدة العملاء، وأمان ACL وانتحال الهويّة، وصفوف تد...
-
الإيقاظات الزائفة ── لماذا يستيقظ متغيّر الشرط «دون إشعار» وكيف تنتظر بشكل صحيح على Windows
يمكن لانتظار متغيّر شرط أن يستيقظ بلا إشعار (إيقاظ زائف). لماذا يسمح Windows بذلك، والانتظار الصحيح بـ while ومحمول في Win32 وC++ وC#.
-
أفضل الممارسات العمليّة لتعدّد مؤشّرات الترابط: نسخة .NET ── ما تقرِّره قبل إضافة مؤشّرات ترابط
قواعد تصميم عمليّة تمنع شيفرة .NET/C# متعدّدة مؤشّرات الترابط من الانهيار أو التجمّد أحياناً: اركب على Task بدل إنشاء المؤشّرات بنفسك، قلِّل الحالة القابلة ل...
-
استخدام WMI/CIM من C# وPowerShell ── دليل عمليّ لاسترجاع معلومات العتاد ومراقبة العمليّات والاستعلام عن بُعد
الإجابة الكلاسيكيّة للحصول على الرقم التسلسليّ للحاسوب، ومراقبة المساحة الحرّة على القرص، وكشف بدء عمليّة هي WMI/CIM. يشرح المقال أوامر CIM مثل Get-CimInstan...
-
أعماق إدخال/إخراج Windows (الجزء 4) ── مدير الذاكرة المؤقّتة: متى يصل WriteFile فعلاً إلى القرص؟
الجزء 4 من سلسلة تشرح مدير الذاكرة المؤقّتة في Windows بالرسوم. نرتّب الذاكرة المؤقّتة المنفَّذة كتعيين ملفّ، والقراءة الاستباقيّة والكتابة المؤجَّلة، والاخت...
-
التوافق الخلفي لواجهات DLL وCOM ── جدول قرار لتحديد أيّ تغيير يكسر جهة الاستدعاء
أيّ تغيير في مكوّنات DLL أو COM يكسر جهة الاستدعاء؟ نرتّب الطبقات الثلاث للتوافق: الثنائيّ، والمصدريّ، والسلوكيّ، ونقدّم جدول قرار حسب نوع التغيير، والقاعدة ...
-
إدارة إصدارات مخطّط قاعدة بيانات تطبيقات الأعمال ── ممارسات الترحيل لمنع «اختلاف قاعدة البيانات من عميل لآخر»
دليل عمليّ لإدارة إصدارات مخطّط قاعدة بيانات تطبيقات الأعمال الموزَّعة على عملاء متعدّدين. نشرح PRAGMA user_version وتنفيذ الترحيل الأماميّ بلغة C#، وجدول ال...
-
CI/CD عمليّ لتطبيقات WinForms / WPF ── أتمتة البناء والتوقيع والتوزيع عبر GitHub Actions
دليل عمليّ لبناء CI/CD لتطبيقات WinForms / WPF عبر GitHub Actions. يشمل YAML الأدنى للبناء والاختبار على windows-latest، وترقيم الإصدار المدفوع بالوسم، وإدما...
-
التعديل الآمن على تطبيق أعمال قديم بلا اختبارات ── ممارسة اختبار التوصيف وإعادة الهيكلة
لإجراء تعديلات آمنة على تطبيق أعمال بلا اختبارات، نشرح خطوات اختبار التوصيف (أسلوب 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 للأعمال في علبة النظام والإشعارات المنبثقة. نشرح الاستخدام الصحيح لـ NotifyIcon، وإعادة التسجيل عند إعادة تشغيل Explorer، وجدول ا...
-
إلى متى ستستمر تطبيقات VB6 في العمل ── وضع دعم بيئة التشغيل والمسار العملي للترحيل إلى .NET
إلى متى تستمر تطبيقات VB6 في العمل؟ نرتّب وضع بيئة التشغيل المشمولة حتى في Windows 11 وانتهاء دعم بيئة التطوير، وجدول القرار بين إعادة الكتابة الكاملة والتحو...
-
معالجة التقويم الياباني والعطلات الرسمية وتاريخ الإغلاق في تطبيقات الأعمال ── تصميم يقاوم تغيّر العصر، وJapaneseCalendar، وحساب أيام العمل
نرتّب معالجة التواريخ الخاصة بتطبيقات الأعمال اليابانية: عرض التقويم الياباني، وحساب أيام العمل باستثناء العطلات، وتاريخ الإغلاق. نشرح التصميم المقاوم لتغيّر...
-
تعدد اللغات في تطبيقات WinForms/WPF ── الممارسة العملية لملفات resx وتجميعات الأقمار الصناعية وتبديل الثقافة
نرتّب تعدد اللغات في تطبيقات سطح المكتب على Windows: الفرق بين CurrentCulture وCurrentUICulture، وآلية resx وتجميعات الأقمار الصناعية، والاختيار الواقعي للطر...
-
ملف CSV ليس «مجرد نص» ── الممارسة العملية لـ CSV في تطبيقات C# للأعمال (ترميز الأحرف وتوافق Excel والحماية من الحقن)
نرتّب الحوادث النموذجية لإدخال وإخراج CSV في تطبيقات الأعمال — التحليل اليدوي بـ Split(',')، وتشوه النصوص في Excel بسبب UTF-8 بلا BOM، وسقوط الصفر البادئ — و...
-
لا تُحِط HttpClient بـ using ── الممارسة العملية لاتصال HTTP في تطبيقات C# للأعمال (أنماط الإنشاء والمهلة وإعادة المحاولة)
إنشاء HttpClient داخل using في كل مرة يستنزف المقابس، وجعله static يمنعه من متابعة تغيّر DNS. نرتّب نمط الإنشاء الصحيح عبر PooledConnectionLifetime وIHttpCli...
-
تحديد سبب «البطء» بـ 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#، ونتابع في Wireshark كيف تتداخل الطبقات السبع. نرتّب أيضاً تقا...
-
كيف نفهم عزل الجلسات في Windows ── Session 0 وRDP وتشغيل عدة مستخدمين معاً
نوضح مفهوم «الجلسة» الذي يربك كثيراً من مطوّري تطبيقات Windows. نشرح عملياً سبب عزل Session 0 الذي يمنع الخدمة من عرض واجهة، وسلوك الجلسات عند الاتصال عبر RD...
-
قراءة ملفّات تفريغ الأعطال بـ WinDbg وSOS ── مدخل عمليّ إلى التحليل بعد الجمع
نشرح خطوات قراءة ملفّ تفريغ أعطال Windows بـ WinDbg وامتداد SOS. نغطّي ضبط مسار الرموز، وتتبع الاستثناءات وتسريبات الذاكرة بـ !clrstack و!dumpheap، وأمر !ana...
-
منع التشغيل المتعدّد لتطبيقات Windows ── Mutex المسمّى وتفعيل النافذة عند التشغيل المزدوج
نرتّب تنفيذ منع التشغيل المتعدّد لتطبيقات Windows للأعمال بـ Mutex مسمّى. نشرح الفرق بين Global\ وLocal\ ومطبّاته في بيئات RDP، وAbandonedMutexException، وإظ...
-
استدعاء Win32 API بأمان من C# ── دليل P/Invoke العملي (DllImport / LibraryImport / CsWin32)
نرتّب النقاط العملية لاستدعاء Win32 API من C# عبر P/Invoke. الفرق بين DllImport وLibraryImport، والتوليد التلقائي عبر CsWin32، ومطبّات ترحيل السلاسل، وSafeHa...
-
دمج مصادقة Entra ID في تطبيقات WinForms/WPF ── التشكيل العملي لـ MSAL.NET ووسيط WAM
نرتّب خطوات دمج مصادقة Entra ID في تطبيقات WinForms/WPF لسطح المكتب. نشرح مفهوم العميل العامّ، وتسجيل التطبيق، وAcquireTokenSilent في MSAL.NET، ووسيط WAM، وا...
-
التاريخ والوقت والمناطق الزمنية في تطبيقات الأعمال ── من فخاخ DateTime إلى مبدأ التخزين بـ UTC وتصميم الاختبارات
ينزاح الوقت 9 ساعات بعد نقل الخادم. نرتّب أسباب أعطال التاريخ والوقت انطلاقاً من Kind في DateTime والتحويل الضمني. نشرح التمييز مع DateTimeOffset، ومبدأ التخ...
-
الاختبار الآلي لواجهة المستخدم في تطبيقات سطح مكتب Windows ── آلية UI Automation وبناء اختبارات لا تنكسر بسهولة باستخدام FlaUI
نرتّب الاختبار الآلي لواجهة المستخدم في تطبيقات WinForms/WPF انطلاقاً من آلية Windows UI Automation. نشرح التنفيذ الأدنى عبر FlaUI، وتصميم AutomationId والان...
-
دعم DPI العالي في WPF ── أسباب الضبابية والتلطّخ رغم أنه «يفترض أن يكون محصّناً ضد DPI» وطرق العلاج
WPF واعٍ بـ System DPI، لكن نقل النافذة إلى شاشة مختلفة DPI يجعل الشاشة كلّها تتلطّخ، وتصبح الصور النقطية ضبابية. نرتّب تشخيص السبب، ودعم Per-Monitor DPI، وا...
-
مشكلة بقاء EXCEL.EXE عند التعامل مع Excel من C# ── أنماط تحرير مراجع COM وقرار الاستبدال
نرتّب مشكلة بقاء عملية EXCEL.EXE عند تشغيل Excel عبر COM من C#، انطلاقاً من آلية عدّ مراجع COM وRCW. نشرح فخ قاعدة النقطتين، وأنماط التحرير عبر ReleaseComObj...
-
دعم DPI العالي في WinForms ── أسباب الضبابية والانهيار على شاشات 4K والمعالجة الواقعية
نرتّب أسباب ضبابية تطبيقات WinForms وانهيار تخطيطها على شاشات 4K انطلاقاً من DPI virtualization وأوضاع إدراك DPI (System Aware / Per-Monitor V2). نشرح طريقة ...
-
كيف تختار وسيلة الاتّصال بين عمليّات 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...
-
قائمة تحقّق للتعامل الآمن مع العمليات الابن في تطبيقات Windows
للتعامل الآمن مع العمليات الابن في تطبيقات Windows، تصميم ملكية شجرة العملية وإجراء الإنهاء أهمّ من واجهة التشغيل. تنظّم المقالة Job Object وانتشار الإنهاء و...
-
مزالق تطبيقات الاتصالات التسلسلية - حتى إعادة الاتصال وتصميم السجلّ
مزالق تطبيقات الاتصالات التسلسلية التي يجدر تجنّبها عند ربط الأجهزة والتحكّم بأجهزة القياس: framing، والـ timeout، وRTS/CTS، وDTR/RTS، وإعادة الاتصال، وتصميم...
-
كيف نختار بين WinForms و WPF و WinUI - جدول قرار عملي
نرتّب اختيار WinForms أو WPF أو WinUI من زوايا التطوير الجديد والأصل القائم والتوزيع والتعبير في الواجهة وتنظيم الفريق.
-
مزالق shared memory وأفضل الممارسات في العمل
نرتّب مزالق استخدام shared memory في العمل، وتصميماً يخفض معدل الأعطال ويشمل المزامنة والرؤية والعمر وABI والأذونات.
-
كيف تقارن سرعة C# وC++ وJava وGo بعدل
نرتّب كيف تقارن سرعة تنفيذ C# وC++ وJava وGo بعدل: تصميم القياس، والإحماء، وتثبيت البيئة، وقراءة الإحصاء، وبنود القياس الملموسة.
-
استخدام DLL لـ .NET 8 من VBA بأنواع صريحة: نشر COM وTLB بـ dscom
خطوات نشر مكتبة أصناف .NET 8 عبر COM، وتوليد TLB بـ dscom، واستخدامها من VBA بربط مبكّر وأنواع صريحة.
-
قائمة التحقّق قبل ترحيل .NET Framework إلى .NET
قائمة تحقّق عمليّة قبل ترحيل .NET Framework إلى .NET: نوع المشروع، والتقنيات غير المدعومة، وتبعيّات NuGet، وأسلوب SDK، و WPF/WinForms، و CI/CD، والتشغيل.
-
ما هو Generic Host في .NET - أساس DI والإعدادات والسجلات
ننظّم دور Generic Host من علاقة DI والإعدادات والسجلات و IHostedService و BackgroundService، ونلخّص أين يؤثّر وأين يصير زائداً من منظور عملي.
-
ما هو Native AOT في .NET - الفرق عن JIT و trimming
ننظّم معنى Native AOT من الفرق عن JIT و ReadyToRun و self-contained و single-file و trimming و source generator، ونلخّص الحالات التي يناسبه والحالات التي تضي...
-
اختيار مؤقّتات .NET الثلاثة: PeriodicTimer و Timer و DispatcherTimer
تنظيم الفروق بين PeriodicTimer و System.Threading.Timer و DispatcherTimer، وكيف تُختار للمعالجة غير المتزامنة و callback على ThreadPool وتحديث واجهة WPF.
-
كيف نستدعي DLL من C# Native AOT من C/C++
إصدار مكتبة أصناف C# كـ native DLL عبر Native AOT، واستدعاء نقاط دخول UnmanagedCallersOnly من C/C++، مع مواضع الاستخدام وأنماط التنفيذ والملاحظات.
-
لماذا نستخدم Generic Host و BackgroundService في تطبيق سطح المكتب
تنظيم البدء والمعالجة الدوريّة والإيقاف والسجلات والإعدادات و DI في أدوات Windows والتطبيقات المقيمة باستخدام Generic Host و BackgroundService.
-
تنظيم async وخيط الواجهة في WPF/WinForms في صفحة واحدة
نرتّب وجهة العودة بعد await في WPF / WinForms، وDispatcher / Invoke، وConfigureAwait(false)، ومواضع التوقّف في .Result / .Wait().
-
دليل عملي لـ FileSystemWatcher: معالجة الفقد والتكرار
نرتّب استخدام FileSystemWatcher ونقاط الحذر فيه من زوايا الفقد، والإشعارات المكرّرة، ومزالق الحكم على الاكتمال، وإعادة المسح، وclaim الذرّي، وidempotency.
-
جدول قرار عملي لـ C# async/await - Task.Run و ConfigureAwait
نرتّب أفضل ممارسات C# async/await بجداول قرار لانتظار I/O وحساب CPU و Task.Run و ConfigureAwait(false) و fire-and-forget.
-
استدعاء native DLL من C#: غلاف C++/CLI مقابل P/Invoke
عند استخدام native DLL من C#، نميّز الحالات التي يكفي فيها P/Invoke عن تلك التي ينفع فيها غلاف C++/CLI، من زوايا الملكيّة والاستثناءات وأنواع C++ والـ callba...