Posts

Showing posts from May, 2014

Generic Disposal (Of T) Tips & Tricks

Tips/Tricks  The following code example shows a custom generic disposal     Public Sub DisposeObjects(Of T As IDisposable)(ByRef disposableObject As T)         Dim disposable As IDisposable = CType(disposableObject, T)         disposableObject = CType(Nothing, T)         If (disposable IsNot Nothing) Then             disposable.Dispose()         End If     End Sub Usage: Dim any as Foo = New Foo DisposeObjects(CType(any, Foo))  

IEnumerable Aggregate, Accumulator Function in VisualBasic.Net

I like Generics so much because it saves a lot of my time. The following code example demonstrates how to use IEnumerable Aggregate and build some useful functions. Example No. (1): May be used to calculate the totals of integers      Public Shared Function AcumulateIntegers(source As IEnumerable(Of Integer)) As Integer         Return source.Aggregate(New Func(Of Integer, Integer, Integer)(AddressOf AddInteger))     End Function     Private Shared Function AddInteger(a As Integer, b As Integer) As Integer         Return (a + b)     End Function Usage:  Dim total As Integer = AcumulateIntegers(New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8}) Example No. (2): Might used to union some rectangles     Public Shared Function UnionRectangles(source As IEnumerable(Of Rectangle)) As Rectangle         Return source.Aggregate(New Func(Of Rectangle, Rectangle, Rectangle)(AddressOf Rectangle.Union))     End Function Usage:         Dim rectA As Rectangle = New Rectangle(0, 0, 2

Why My Thread Safe Generic List Collection not Respect My Enumerator ??!!!

 Introduction Enumerating through a collection is not a thread safe, Is it real ? this question is knocking my head since saw this subject in MSDN ( Link ) and subsequently more questions & ideas starts  in my mind. The real question was, why shall use thread safe collection? according to Microsoft, the answer was simple, it is for better and faster performance, however my understanding is also simple; all property and methods within the generic class shall be written using SyncLock, hope I'm correct, and here it is the code.. Public Class RiverNileList(Of T)     Implements IList(Of T) #Region " RiverNileList (of T) " #Region " Field "     Friend _lock As Object = CType(Nothing, Object)     Friend _list As List(Of T) = CType(Nothing, List(Of T)) #End Region #Region " Constructor "     Public Sub New()         Me.New(New Object)     End Sub     Friend Sub New(obj As Object)         Me._lock = obj     End Sub #End R

مقال: أفكار في الجرافكس ....... الجزء الثاني Graphics Ideas in VisualBasic.Net Part 2

في الكود الخاص بالمثال الثالث الي الخامس في الجزء الأول يوجد بعض القصور وهي كالتالي 1- إهتزاز الرسم أثناء عملية تحريك المستطيل 2- عند الضغط علي الفورم في اي ماكن بالمثال الثالث يتم تحريك المستطيل 3- عند الضغط علي الفورم في يمين أو يسار المستطيل بالمثال الرابع يتم تحريك المستطيل 4- عند الضغط علي الفورم في أعلي أو أسفل المستطيل بالمثال الخامس يتم تحريك المستطيل 5- عند تحريك المستطيل خارج أبعاد الفورم يبدأ المستطيل في الاختفاء ملحوظة : حاول عزيزي القارئ أن تجد حلولا لمثل هذه المشاكل وحاول أيضا أن تستخدم شكلا هندسيا أخر غير المستطيل ..... وذلك قبل أن تقرأ باقي الموضوع ألا يذكرك الكود الموجود أعلاه بأي كونترول تستخدمه علي سبيل المثال TrackBar أو ScrollBar وهذا يعود بنا إلي بداية الموضوع وهو أن مجموعة أفكار صغيرة سوف تؤدي الي بناء فكرة كبيرة في الكود الذي استخدمناه في المثال الثالث الي الخامس الأول كان هناك بعض القصور وفي الأمثلة التالية سوف نحاول التخلص من هذا القصور في الكود   لكي نتخلص من Flicker أو من الإهتزازات التي نراها أثناء عملية تحريك الشكل الهند

مقال: أفكار في الجرافكس ....... الجزء الأول Graphics Ideas in VisualBasic.Net Part 1

مقدمـــــة غالبا ماتكون الأفكار الكبيرة ماهي إلا مجموعة من الأفكار الصغيرة التي تتجمع معا لتشكل هذه الأفكار الكبيرة وفي هذه الأجزاء عن الجرافكس سنحاول أن نغطي مجموعة من الأفكار الصغيرة التي من الممكن أن نستفيد منها لاحقا في بناء فكرة كبيرة عالم GDI+ المهتمين بالرسم أو بالجرافكس بشكل عام يعلمون جيدا معني كلمة +GDI وأيضا يعلمون جيدا كيف يستخدمون الأوامر الخاصة بمكتبة +GDI لرسم الأشكال الهندسية المختلفة أو رسم الصور أو أي شئ أخر علي الفورم أو علي الكونترول لذلك نحن هنا لن نناقش كيف نرسم بل سوف نناقش كيف نستفيد ونطور من عمليات الرسم المختلفة وبالتالي نستفيد منها في بناء ما نريده الفكرة الأولي : الفكرة الأولي التي سوف نتحدث عنها اليوم هي رسم أي شكل هندسي ومن ثم نقوم بتحريك هذا الشكل الهندسي باستخدام الماوس في اي إتجاه نريده والمجموعة التالية من الأمثلة سوف توضح كيفية عمل ذلك المثال الأول : لكي نرسم أي شكل هندسي علي الفورم ولنأخذ المستطيل كمثال غالبا ما نحتاج الي تعريف نقطة بداية عملية الرسم وأيضا أبعاد هذا المستطيل اي أننا نحتاج الي تعريف Location وأيضا Si