أمثلة رمز من كتاب أنماط أمان مؤشر ترابط دلفي
https://dalija.prasnikar.info/delphitspatt/
https://dalija.prasnikar.info
الجزء 2. مكتبة وقت التشغيل الأساسية
الفصل 5. سجل التحكم في نقطة العائمة
- brokenmath.dpr
- brokenmath.dproj
- safemath.dpr
- safemath.dproj
الفصل 7.1. حدود
- المعلمات
- المعلمات
- parametersmainf.pas
- parametersmainf.dfm
الفصل الثامن. الحقول الدراسية ، المفردات ، والحالات الافتراضية
- Singletons.DPR
- singletons.dproj
- singletonsmainf.pas
- singletonsmainf.dfm
- SingletonClasses.Pas
- singletonlocal.pas
- SingletonClassProp.pas
- singletonlazy.pas
الفصل 12. المجموعات
- CollectionStest.dpr
- CollectionStest.dproj
- collectionsmainf.pas
- collectionsmainf.dfm
الفصل 13. معالجة المجموعة الموازية
الجزء 3. الأطر الأساسية
الفصل 16. التسلسل
- Serialization.DPR
- Serialization.Dproj
- SerializationMainf.Pas
- SerializationMainf.DFM
الفصل 17. System.net
- netclient.dpr
- netclient.dproj
- NetClientMainf.Pas
- NetClientMainf.DFM
الفصل 19. إندي
- Indy.DPR
- Indy.Dproj
- Indymainf.pas
- Indymainf.DFM
الفصل 20. الباقي
- RestDemo.dpr
- RestDemo.dproj
- RestMainf.Pas
- RestMainf.DFM
الفصل 21. التعبيرات العادية
الجزء 5. الرسومات ومعالجة الصور
الفصل 27. استهلاك الموارد
- الموارد
- الموارد
- ResourcesMainf.Pas
- ResourcesMainf.DFM
الفصل 30. مثال رسومات VCL
- الصور
- الصور
- ImagesMainf.Pas
- Imagesmainf.dfm
الجزء 6. الأطر المخصصة
الفصل 33. التسجيل
- nx.log.pas
- Logging.DPR
- Logging.dproj
الفصل 34. رموز الإلغاء
- nx.tokens.pas
- الرموز
- الرموز
- Tokensmainf.Pas
- Tokensmainf.DFM
الفصل 35. حافلة الحدث
- nx.horizon.pas
- Horizon.DPR
- Horizon.Dproj
- HorizonMainf.Pas
- HorizonMainf.DFM
الفصل 36. قياس الأداء
- nx.chronos.pas
- ZerothRead.DPR
- Zerothread.dproj
ملاحظة: الغرض من الأمثلة المقدمة هو إما إظهار رمز مؤشر الترابط غير الآمن والمشكلات التي قد تنشأ في مثل هذا الرمز ، أو لإظهار أنماط الترميز العامة لتحقيق رمز آمن مؤشرات الترابط أثناء تشغيل مؤشرات الترابط المتعددة. على هذا النحو ، لا يقوم الكثير منهم بتنفيذ التنظيف المناسب عند إيقاف تشغيل التطبيق ، وإذا أغلقت التطبيق قبل بدء تشغيل مهام الخلفية أو أكملت مؤشرات الترابط وظيفتها ، فقد يعطل التطبيق.
من أجل إجراء إيقاف التشغيل النظيف ، تحتاج إما إلى انتظار إكمال المهمة أو مؤشر ترابط أو استخدام بعض الآلية الأخرى التي ستمنع الوصول إلى واجهة المستخدم الرسومية أو البيانات المشتركة الأخرى أثناء إيقاف تشغيل التطبيق.
يمكنك العثور على أمثلة حول كيفية إيقاف تشغيل التطبيق في https://github.com/dalijap/code-delphi-async الفصل 35.2 التنظيف على تدمير واجهة المستخدم الرسومية