26-10-17, 02:47 PM
(آخر تعديل لهذه المشاركة : 26-10-17, 02:49 PM {2} بواسطة silverlight.)
الأخ قناص المدينة
بالرغم اني مش بافهم في الداتبيز
لكن حين رأيت الكود الخاص بك
فهمت ماذا تقصد
انت هنا تقرا البيانات من index معين حتي index أخر و هذا ما تقصده أنت بالتقسيم
ما فعلته يمكن عمله بالمصفوفات ايضا او باستخدام LINQ بسهولة
عمومانا فكرتي تختلف عن الكود الخاص بك تماما فهدفي من الموضوع هو توضيح ان المبرمج لا يحتاج الي استخدام Threading بل يمكنه ان يبني Thread الخاص به
خاصة عند تعبئة البيانات الضخمة من ملف الي الكونترول مثل الليست بوكس كما في المثال
الأن و لتوضيح الأمر كثر لنفترض انك لديك مصفوفة بها 200 مليون سجل
كيف تملأ البيانات في الليست بوكس بطريقة لا تجعل البرنامج الخاص بك يهنج
هذا هو الهدف من الموضوع
أما طريقة التقسيم فأنا استخدمها مع البيانات الأكثر ضخامة بحيث يتم تقسيم المصفوفة الي مصفوفات صغيرة ذات حجم معين أحدده أنا
لأنه احيانا القراءة مباشرة قد تؤدي بك الي System out of memory exception
في المثال التالي قمت بقراءة 200 مليون رقم و بدأت أملأ بها الليست بوكس
حاول تغثر القيمة 200 مليون الي مثلا Integet.MaxValue -1
ثم لاحظ ماذا سيحدث معك
--------------------------------------------------------------------
الأخ السندباد
كلامك مظبوط طبعا .......
بالرغم اني مش بافهم في الداتبيز
لكن حين رأيت الكود الخاص بك
فهمت ماذا تقصد
انت هنا تقرا البيانات من index معين حتي index أخر و هذا ما تقصده أنت بالتقسيم
ما فعلته يمكن عمله بالمصفوفات ايضا او باستخدام LINQ بسهولة
عمومانا فكرتي تختلف عن الكود الخاص بك تماما فهدفي من الموضوع هو توضيح ان المبرمج لا يحتاج الي استخدام Threading بل يمكنه ان يبني Thread الخاص به
خاصة عند تعبئة البيانات الضخمة من ملف الي الكونترول مثل الليست بوكس كما في المثال
الأن و لتوضيح الأمر كثر لنفترض انك لديك مصفوفة بها 200 مليون سجل
كيف تملأ البيانات في الليست بوكس بطريقة لا تجعل البرنامج الخاص بك يهنج
هذا هو الهدف من الموضوع
أما طريقة التقسيم فأنا استخدمها مع البيانات الأكثر ضخامة بحيث يتم تقسيم المصفوفة الي مصفوفات صغيرة ذات حجم معين أحدده أنا
لأنه احيانا القراءة مباشرة قد تؤدي بك الي System out of memory exception
في المثال التالي قمت بقراءة 200 مليون رقم و بدأت أملأ بها الليست بوكس
PHP كود :
Public Class Form1
Private x As Integer = 0
Private y As Integer = 0
Private values As Integer() = Nothing
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
values = New Integer(200000000) {}
Timer2.Interval = 10
Timer2.Start()
Threading.Thread.Sleep(100)
Timer1.Interval = 20
Timer1.Start()
End Sub
Private Sub FillListBox()
Dim s As Integer = values(Me.x Mod values.Length)
x += 1
ListBox1.Items.Add(s.ToString)
If x = values.Length Then
Timer1.Stop()
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
FillListBox()
End Sub
Private Sub ReadData()
values(y) = y
y += 1
If y = values.Length Then
Timer2.Stop()
End If
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
ReadData()
End Sub
End Class
حاول تغثر القيمة 200 مليون الي مثلا Integet.MaxValue -1
ثم لاحظ ماذا سيحدث معك
--------------------------------------------------------------------
الأخ السندباد
كلامك مظبوط طبعا .......
Retired

