الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تنفيذ عملية الرسم في thread منفصل

بدأه mohammed_k في 15 فبراير 2012 · 1 رد · 393 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني...

انني اقوم بقراءة نص من ملف و من ثم اقوم برسم الجمل بعد تقطيعها على الفورم المشكلة هي عندما يكون النص كبير فان ذلك يؤدي الى تأخير و توقيف البرنامج بشكل كامل لحين انتهاء من عملية الحساب و التقطيع و من الرسم و هذا لان جميع العمليات تتم في thread واحد.....

السؤال هو كيف يمكن تنفيذ عملية الرسم في thread منفصل....... لقد حاولت و واجهة مشكلة انه لا يمكن لـ thread منفصل التعامل مع الحدث OnPaint

#2

السلام عليكم ...

  1. ممكن وصل الــ thread مع الحدث paint عن طريق متحول عام , الــ thread يضع فيه بيانات و الــ paint يأخذ منه هذه البيانات ..
  2. المشكلة الثانية التي ممكن تواجهها , هي أن الحدث paint يتم إستدعاؤه بشكل متكرر , حيث يتم مسح كامل النافذة , و عليك رسمها من جديد كل مرة ...
  3. هذه محاولتي .. لا أعرف مدى دقتها ...
    Imports System.Threading
    
    Public Class FrmThreadDraw
    	Private pointList As New List(Of Point)()
    
    	Private Sub FrmThreadDraw_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        	Dim thread As New Thread(New ParameterizedThreadStart(AddressOf threadMethod))
        	thread.Start(pointList)
    	End Sub
    	Private Sub threadMethod(ByVal parameter As [Object])
        	While True
            	Dim random As New Random()
            	Dim p As New Point(random.Next(10, 1000), random.Next(10, 1000))
            	DirectCast(parameter, List(Of Point)).Add(p)
        	End While
    	End Sub
    
    	Private Sub FrmThreadDraw_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        	For i As Integer = 0 To pointList.Count - 2
            	Dim p1 As Point = pointList(i)
            	Dim p2 As Point = pointList(i + 1)
            	e.Graphics.DrawLine(New Pen(Color.Red), p1, p2)
        	Next
    	End Sub
    End Class

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة