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

لدي سؤال حول تعدد المسارات Threading

مغلق
بدأه blackeyes في 19 فبراير 2008 · 4 رد · 946 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي سؤال حول تعدد المسارات

وهي مشكلة تواجهني ايضا

لدي فوم يظهر عند ضغط زر يقوم باجراء معين مثلا زر الحفظ

لقد وضعت على الفورم (برغرس بار) متحرك (مثل اقلاع اكس بي)

ولأن البرنامج مشغول بأمر الحفظ يتم عرض (البرغرس بار) متوقفا !!

وذلك لانه بدأ في نفس المسار

عندما أقوم بتعريف (ثرد) لهذا الفورم يظهر الفورم بشكل جيد ويتحرك (البرغرس بار) كذلك بشكل طبيعي

السؤال كيف أغلق الفورم الذي بدأ في مسار ثاني عند انتهاء الحفظ؟؟؟

يوجد مثال مرفق

وشكر لكم

WaitingForm.rar

#4

تفضل هذا كود Form1 الكامل بعد تعديلاتي

Public Class Form1

	Private Shared CancelThrd As Boolean = False

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		' لايجب أن يكون متغيرا عاما على مستوى الفئة بل يجب تعرفه كمتغير محلي داخل الإجراء
		Dim Thrd As New Threading.Thread(AddressOf ShowWait)

		CancelThrd = False

		Thrd.Start()

		Me.ListBox1.Items.Clear()
		For i As Integer = 0 To 5
			For Each f As String In IO.Directory.GetFiles("c:\windows\system32")
				Me.ListBox1.Items.Add(f)
			Next
		Next

		CancelThrd = True

	End Sub

	Sub ShowWait()
		WaitForm.StartPosition = FormStartPosition.CenterScreen
		WaitForm.Show()

		' ادخل في حلقة لانهائية بينما ينهي البرنامج عمله
		Do
			Application.DoEvents()
		Loop Until CancelThrd = True

		WaitForm.Close()
	End Sub

End Class

المشكلة هي أنك عندما أظهرت النموذج WaitForm من المسار الثاني لا يمكنك إنهاؤه من المسار الأول لأنه ليس المسار الذي قام بإظهاره بالأساس لذا يجب علينا إنهاؤه من نفس المسار الذي أظهره لهذا وضعت حلقة Do ... Loop تدور حول نفسها بينما ينهي البرنامج عمله وعند تغير قيمة المتغير CancelThrd من القيمة False إلى القيمة True تنتهي حلقة Do ثم يتم إغلاق النموذج بعد انهاء الحلقة

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 20 فبراير 2008 في 07:43

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

اهاا

نعم كان ذلك هو السبب أني كنت اقوم بوضع متغير بوليان ولكن ليس شارد

لاني جربت نفس الطريقة سابقا وماضبطت معي

ألف شكرا اخي العزيز محمد سامر ولك اخي العزيز حزووم على المساعدة

تم تعديل هذه المشاركة بواسطة blackeyes في 20 فبراير 2008 في 12:02

هذا الموضوع مغلق.

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