تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
يوجد لدي بطئ في تحميل الصور داخل FlowLayoutPanel1 يوجد لدي اكثر من 100 صنف
#1
PHP كود :
Private Sub LoadData()
 
       FlowLayoutPanel1.Controls.Clear()
 
       If _action "StartUp" Then Cmd = New OleDbCommand("SELECT pic,ID,ProductNameA,ProductNameE from Proudect Where ProductNameA like '%" TextSerch.Text "%' "conn)
 
       If _action "Search1" Then Cmd = New OleDbCommand("SELECT pic,ID,ProductNameA,ProductNameE from Proudect Where id_Proudect_items =" _query1 ""conn)
 
       conn.Open()
 
       rdr Cmd.ExecuteReader(CommandBehavior.CloseConnection)
 
       While rdr.Read
            Dim len 
As Long rdr.GetBytes(00Nothing00)
 
           Dim array(CInt(len)) As Byte
            rdr
.GetBytes(00, array, 0CInt(len))
 
           pic = New PictureBox
            pic
.Width 150
            pic
.Height 150
            pic
.BackgroundImageLayout ImageLayout.Stretch
            pic
.Tag rdr.Item("ID").ToString
            AddHandler pic
.ClickAddressOf lblD_Click
            
'-----------------------------------------------------
            lblD1 = New Label
            lblD1.Font = New Font("Tahoma", 10, FontStyle.Bold)
            lblD1.ForeColor = Color.FromArgb(72, 4, 156)
            lblD1.BackColor = Color.GhostWhite
            lblD1.Dock = DockStyle.Top
            lblD1.Tag = rdr.Item("ID").ToString
            lblD1.Text = rdr.Item("ID").ToString
            '
-----------------------------------------------------
 
           lblD = New Label
            lblD
.Font = New Font("Tahoma"9FontStyle.Bold)
 
           lblD.ForeColor Color.FromArgb(724156)
 
           lblD.BackColor Color.GhostWhite
            lblD
.Dock DockStyle.Bottom
            lblD
.Tag rdr.Item("ID").ToString
            lblD
.Text rdr.Item("ProductNameE").ToString "-" rdr.Item("ProductNameA").ToString
            AddHandler lblD
.ClickAddressOf lblD_Click
            
'-----------------------------------------------------
            Dim ms As New System.IO.MemoryStream(array)
            Dim bitmap As New System.Drawing.Bitmap(ms)
            pic.BackgroundImage = bitmap
            '
-----------------------------------------------------
 
           pic.Controls.Add(lblD)
 
           pic.Controls.Add(lblD1)
 
           FlowLayoutPanel1.Controls.Add(pic)
 
           '--------------------------------------------------------------------------------------------------------------
        End While
        rdr.Close()
        conn.Close()
        FlowLayoutPanel1.AutoScroll = True 
الرد }}}
تم الشكر بواسطة:
#2
يبدو أن البطء في تحميل الصور داخل FlowLayoutPanel1 يمكن أن يكون ناتجًا عن عدة عوامل. إليك بعض النصائح التي قد تساعد في تحسين الأداء:

استخدام تحميل الصور بشكل متزامن: يمكنك استخدام تحميل الصور بشكل متزامن لتحسين الأداء. بدلاً من تحميل الصور بشكل متسلسل في حلقة الـ While، يمكنك استخدام تحميل الصور بشكل متزامن لتحميل الصور بشكل فعال دون تعطيل واجهة المستخدم. يمكنك استخدام خيوط أو العمل بشكل متزامن باستخدام Task في Visual Basic.

تقليل عدد الصور المحملة في كل مرة: إذا كانت لديك أكثر من 100 صنف، فإن تحميل الصور الكاملة لكل صنف في كل مرة قد يؤدي إلى تحميل كمية كبيرة من البيانات في وقت واحد، مما يؤدي إلى بطء في الأداء. يمكنك محاولة تقليل عدد الصور المحملة في كل مرة، مثلاً بتحميل صور لمجموعة محددة من الصنف في كل دورة.

تحسين حجم الصور: قد يكون حجم الصور الذي تقوم بتحميله كبيرًا جدًا، مما يؤدي إلى بطء في تحميلها وعرضها. يمكنك تحسين حجم الصور المحملة لتقليل الحمل على النظام وتسريع عرضها.

استخدام تقنيات التخزين المؤقت (Caching): يمكنك تخزين الصور المحملة بالفعل في ذاكرة مؤقتة (Cache) لتجنب إعادة تحميلها في كل مرة تقوم فيها بعرض البيانات.

تقليل البيانات المحملة: إذا كانت البيانات التي تحملها تحتوي على معلومات زائدة غير ضرورية للعرض الفوري، يمكنك تقليل عدد البيانات المحملة من قاعدة البيانات لتحسين الأداء.

استخدام أدوات تحسين الأداء: يمكنك استخدام أدوات مثل مُحلل الأداء لفهم ما يسبب البطء في التطبيق الخاص بك وتحسينه وفقًا لذلك.

جرب تطبيق بعض هذه النصائح وراقب أي تحسن في أداء تحميل الصور داخل FlowLayoutPanel1.

جرب هذا التعديل :

PHP كود :
Private Sub LoadData()
 
   FlowLayoutPanel1.Controls.Clear()
 
   Try
        conn
.Open()
 
       Dim query As String ""

 
       If _action "StartUp" Then
            query 
"SELECT pic, ID, ProductNameA, ProductNameE FROM Proudect WHERE ProductNameA LIKE '%" TextSerch.Text "%'"
 
       ElseIf _action "Search1" Then
            query 
"SELECT pic, ID, ProductNameA, ProductNameE FROM Proudect WHERE id_Proudect_items = " _query1
        End 
If

 
       Dim cmd As New OleDbCommand(queryconn)
 
       Dim rdr As OleDbDataReader cmd.ExecuteReader()

 
       While rdr.Read
            Dim len 
As Long rdr.GetBytes(00Nothing00)
 
           Dim array(CInt(len)) As Byte
            rdr
.GetBytes(00, array, 0CInt(len))

 
           Dim ms As New System.IO.MemoryStream(array)
 
           Dim bitmap As New System.Drawing.Bitmap(ms)

 
           Dim pic As New PictureBox
            pic
.Width 150
            pic
.Height 150
            pic
.BackgroundImageLayout ImageLayout.Stretch
            pic
.BackgroundImage bitmap
            pic
.Tag rdr("ID").ToString()

 
           Dim lblD1 As New Label
            lblD1
.Font = New Font("Tahoma"10FontStyle.Bold)
 
           lblD1.ForeColor Color.FromArgb(724156)
 
           lblD1.BackColor Color.GhostWhite
            lblD1
.Dock DockStyle.Top
            lblD1
.Tag rdr("ID").ToString()
 
           lblD1.Text rdr("ID").ToString()

 
           Dim lblD As New Label
            lblD
.Font = New Font("Tahoma"9FontStyle.Bold)
 
           lblD.ForeColor Color.FromArgb(724156)
 
           lblD.BackColor Color.GhostWhite
            lblD
.Dock DockStyle.Bottom
            lblD
.Tag rdr("ID").ToString()
 
           lblD.Text rdr("ProductNameE").ToString() & "-" rdr("ProductNameA").ToString()

 
           pic.Controls.Add(lblD)
 
           pic.Controls.Add(lblD1)
 
           AddHandler pic.ClickAddressOf lblD_Click

            FlowLayoutPanel1
.Controls.Add(pic)
 
       End While

 
       rdr.Close()
 
   Catch ex As Exception
        
' يمكنك إدراج رمز يعالج الخطأ هنا
    Finally
        conn.Close()
    End Try

    FlowLayoutPanel1.AutoScroll = True
End Sub 

هذا التعديل يشمل:

إضافة جملة Try-Catch-Finally لمعالجة الأخطاء وضمان إغلاق الاتصال بقاعدة البيانات بغض النظر عن حدوث الأخطاء.
استخدام استعلام متغير بدلاً من تكرار الكود لإنشاء الاستعلام.
تحسين ترتيب الشيفرة لتكون أكثر وضوحًا وسهولة في القراءة.
إصلاح الأخطاء النحوية البسيطة مثل تغيير "Proudect" إلى "Product" إذا كانت هذه هي الجدول المناسب.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تحميل قائمة فيديوهات كاملة من اليوتيوب dr.programming 1 148 06-12-25, 02:26 AM
آخر رد: princelovelorn
  ممكن ايضاح اكثر لـ continu for justforit 6 291 05-11-25, 12:10 AM
آخر رد: justforit
  [سؤال] يوجد مثال|كيف نعيد صياغة نص ليكون تاريخ مقبول justforit 7 275 01-11-25, 10:54 PM
آخر رد: justforit
  كود تحميل فيديو من اليوتيوب عبر بايثون justforit 4 245 23-10-25, 02:58 AM
آخر رد: justforit
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,828 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 651 24-04-25, 12:58 PM
آخر رد: foad8920
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 435 01-02-25, 03:48 PM
آخر رد: Microformt
  استدعاء من جدولين داخل اداه FlowLayoutPanel برجاء الافادة للضرورة جداً modymody300894 7 613 15-11-24, 11:02 AM
آخر رد: modymody300894
  اريد جلب عدد محدد من السجلات من قاعدة بيانات اكسس الى الداتا قراد فيو يوجد مثال khalidalwdi 2 654 12-11-24, 12:19 PM
آخر رد: khalidalwdi
  كتابه عدد معين من الارقام داخل تيكست بوكس modymody300894 3 545 07-11-24, 09:15 PM
آخر رد: modymody300894

التنقل السريع :


يقوم بقرائة الموضوع: