![]() |
|
Data Marshall - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Data Marshall (/showthread.php?tid=21771) |
Data Marshall - silverlight - 19-09-17 الهدف: هذا الموضوع الهدف منه توضيح واحدة من الأساليب البسيطة و السهلة لكي تتأكد ان البيانات قد تم تمريرها من داخل الكود بأسلوب أكثر أمانا وذلك من أجل تفادي الأخطاء أثناء تنفيذ البرنامج الفكرة: تنحصر الفكرة في استخدام عداد Count رقمي و حين يتم تمرير اي بيانات ترتفع و تزيد قيمة هذا العداد بمقدار 1 و عندما يتم الإنتهاء من استخدام البيانات فإن العداد تقل قيمته بمقدار 1 مثال الكود التالي عبارة عن مثال صغير وبسيط لتوضيح الفكرة PHP كود : ' تخديد القيمة المبدئية للعدادالكلاس التالي يقوم بأداء نفس الفكرة المستخدمة في المثال أعلاه و الكلاس اسمه SafeCount وهو عبارة عن كلاس MustInherit Class يمكن توريثه لاحقا لأي كلاس أخر PHP كود : Public MustInherit Class SafeCountوبما أن جميع البيانات من الممكن تحويلها من و إلي Intptr أو String سوف يتم استخدام الكلاس اعلاه و توريثه الي كلاس أخر إسمه SafePtr حيث أن البيانات يتم تمريرها للكلاس الجديد علي هيئة IntPtr PHP كود : Imports System.Runtime.InteropServicesاستخدام الكلاس مثال: PHP كود : Dim ptr As IntPtr = New IntPtr(Me.Handle.ToInt64)مثال أخر: اقتح مشروع وأضف Label الي الفورم ثم أضف تايمر الي المشروع و اكتب الكود بالشكل التالي PHP كود : Public Class Form1في الحدث الخاص يالتايمر و بالرغم أن الكلاس الذي كتبناه يتم عمل Dispsoe له باستخدام جملة Using ومع ذلك ستجد أن قيمة Label.Text تتغير مع التايمر الكلاس SafePtr أعلاه يمكن استخدامه في اشياء كثيرة و الأمر متروك لمخيلتكم أتمني أن يكون الكود مفيد1 للبعض منكم تقبلوا تحياتي RE: Data Marshall - Fantastico - 20-09-17 يهتز كبريائي عندما أقرأ أكوادك قرأت الموضوع بعناية لكن هذه المرة لم أفهم شيئاً ما الذي تسعى له بالتحديد RE: Data Marshall - silverlight - 20-09-17 الموضوع بسيط فالفكرة تنحصر في تمرير البيانات بدون أخطاء أو تستطيع ان تعتبره نوع من Cache للبيانات ربما الكود يبدو معقدا في ظاهره فقط بسبب استخدام IntPtr لكن سبب ذلك أن كل شئ يمكن تحويله الي IntPtr وقد تم استخدام IDisposable Interface في الكلاس الأصلي حتي تضمن ان البيانات التي يتم تمريرها و مهما كان نوعها يتم التخلص منها مباشرة من خلال استخدام جملة using و بالتالي لا تظل في الذاكرة عموما في المثال الأخير في الموضوع و في الحدث الخاص بالتايمر اكتب الكود بالشكل التالي و ستلاحظ عند تنفيذ الكود و بالرغم أن المدخلات تساوي Nothing فإنه لا يحدث أخطاء عند اتنفيذ PHP كود : Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick |