تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إستعمال ال Multi Threading
#21
Heart 
بعد التركيز في الكود الي كتبته يتضح انك حاولت تستدعي showdialog من خلال ثريد فرعي وهذا صحيح ولكن ايضا هناك شرط ليكون الامر فعالا وهو ان انشاء كائن الفورم نفسه يجب ان يكون في الثريد الفرعي كذلك ، ولذلك الكود الاساسي الذي كتبته لك كان فعالا ..

بالنسبة للمشكلة الي حصلت بسبب السكين وعدم عمله بشكل سليم ، ذلك والله العالم لان الديف اكسبرس لايعمل بشكل مضبوط في الثريدات الفرعية

سأجرب الان شغلة وارجع لك


--

اخوي ابو ليلى تحياتي لك ولجميع الاخوة في المنتدى والله اشتقنا لكم ..
الرد }}}
#22
تسلم أستاذنا الشاكي لله و سلم يمنك و دينك
المشكلة أخي الكريم لا تظهر عند فتح فورم عادي .. التوقف سيكون ثانية أو ثانيتين
لكن التوقف سنلاحظه بوضوح مثلا عند ما أتعمد جعل فورم تجريبي يحتوي على SpreadSheet أو RichEditControl
تحياتي واحتراماتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#23
للاسف حاولت اجعل الويب براوزر يعمل في ثريد فرعي ولكن ظهر معي خطأ معناه انه لايمكن جعل كونترول تم تكوينه في ثريد فرعي في الفورم الذي تم تكوينها بالثريد الاساسي ..

ولكن الكود الاولي الذي كتبته لك كان فعالا: 

كود :
Private Sub SurroundingSub()
   Dim th As Thread = New Thread(Sub()
                                     'انشاء كائن الفورم يجب ان يكون هنا
                                     Dim form As Form2 = New Form2()

                                     'اظهار الفورم
                                     form.ShowDialog()
                                 End Sub)
   th.SetApartmentState(ApartmentState.STA)
   th.Start()
End Sub


فيه حل تلويصي اخر وهو جعل الwebbrowser في فورم منفصلة وتقوم بتشغل الفورم بنفس طريقة الكود اعلاه
ولكي لايلحظ المستخدم ان الويب براوزر يشتغل في window منفصلة ، هنا يمكنك اللعب على خصائص الفورم مثل اخفاء الcontrol bars (زر الاغلاق والتكبير والتصغير) ، وايضا تجعل مكان الفورم هذي فوق المكان المخصص للعرض ، واسناد خاصة owner ..

ساعطيك مثالا على ذلك في لحظات ..
الرد }}}
#24
إلهي يبارك فيك و لك و يعطيك ما تتمناه بمحبة الله و مرضاته إن شاء الله
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#25
تفضل اخوي ، 

في هذا المثال المكتوب بالسي شارب ستجد هناك الفورم الرئيسية (form1) تحاول تشغيل الفورم الفرعية form2 (تشغيل هذه الفورم يحتاج 3 ثواني)

الان عندما نريد ان نضع ويب براوزر لتشغيل صورة متحركة في الفورم1 ستصادفنا مشكلة التهنيق عندما نحاول فتح الفورم2 وذلك بسبب انشغال الثريد

ماقمت بعمله في المثال التالي هو حذف الويب براوزر من الفورم1 ونقله الى فورم جديدة خالية من كلشيء ، ومن ثم تشغيل هذا الفورم فوق المكان المطلوب لتبدو وكانها داخل الفورم1 حقا، ولكنها داخل فورم اخرى تم انشائها في ثريد اخر .

يمكنك مراجعة المثال ورؤيته كيف يعمل :


الملفات المرفقة
.zip   WindowsFormsApp1.zip (الحجم : 47.97 ك ب / التحميلات : 20)
الرد }}}
#26
تفضل هذا الكود للفورم1 كاملا محول للفيجوال بيسك
كود :
Public Partial Class Form1
   Inherits Form

   Private webBrowserForm As Form = DirectCast(Nothing, Form)

   Public Sub New()
       InitializeComponent()
       Form1.CheckForIllegalCrossThreadCalls = False
       CreateWebBroser()
   End Sub

   Private Sub CreateWebBroser()
       Dim th As Thread = New Thread(Sub()
                                         'انشاء كائن الفورم يجب ان يكون هنا
                                         webBrowserForm = New Form()
                                         webBrowserForm.StartPosition = FormStartPosition.Manual
                                         webBrowserForm.FormBorderStyle = FormBorderStyle.None
                                         webBrowserForm.ShowInTaskbar = False
                                         CalculateWebBrowserFormLocationAndSize()
                                         webBrowserForm.Owner = Me
                                         webBrowserForm.Controls.Add(New WebBrowser() With {
                                             .Url = New Uri("https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"),
                                             .Dock = DockStyle.Fill
                                         })

                                         'اظهار الفورم
                                         Application.Run(webBrowserForm)
                                     End Sub)
       th.SetApartmentState(ApartmentState.STA)
       th.IsBackground = True
       th.Start()
   End Sub

   Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
       Call New Form2().ShowDialog()
   End Sub

   Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As EventArgs)
       CalculateWebBrowserFormLocationAndSize()
   End Sub

   Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As EventArgs)
       CalculateWebBrowserFormLocationAndSize()
   End Sub


   Private Sub CalculateWebBrowserFormLocationAndSize()
       If webBrowserForm Is Nothing Then Return

       If webBrowserForm.InvokeRequired Then
           webBrowserForm.Invoke(New Action(AddressOf CalculateWebBrowserFormLocationAndSize))
       Else
           webBrowserForm.Location = PointToScreen(panel1.Location)
           webBrowserForm.Size = panel1.Size
       End If
   End Sub
End Class
تمت الاستعانة ب panel1 هو بانل فاضي مهمته يكون الplaceholder للمكان المفترض يطلع فيه الفورم الي فيه الويب براوزرد


المثال علمته على السريع لذلك لك حرية التصرف في عمل تحسينات له
..
موفقين 
الرد }}}
#27
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك أستاذنا الفاضل الشاكي لله و في كل السادة الأساتذة المحترمين الذين قدّموا العون من قريب أو من بعيد
سأحاول تجميع كل هذه الأفكار النيّرة بمشروع واحد و أضعه للإستغادة
تقبلوا كامل إحترامي و امتناني و عرفاني بجميلكم و جميل أعمالكم
تحياتي للجميع
قناتنا على اليوتوب
الرد }}}
#28
السلام عليكم
هل جربت العمل بـ BuckgroundWorker ؟
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#29
(18-10-20, 10:19 PM)larbihamri كتب : السلام عليكم
هل جربت العمل بـ BuckgroundWorker ؟

لم أجرب هذه الطريقة أخي العربي

أكون لك جد شاكر لو تعمل مثال بسيط حول فتح فورم بهاته الطريقة للتعلّم

بارك الله فيك و لك و جزاك خير الجزاء مقدما

تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة:
#30
(19-10-20, 02:05 AM)عبد العزيز البسكري كتب :
(18-10-20, 10:19 PM)larbihamri كتب : السلام عليكم
هل جربت العمل بـ BuckgroundWorker ؟

لم أجرب هذه الطريقة أخي العربي

أكون لك جد شاكر لو تعمل مثال بسيط حول فتح فورم بهاته الطريقة للتعلّم

بارك الله فيك و لك و جزاك خير الجزاء مقدما

تحياتي



هذا شرح شامل خفيف لها أخى عبد العزيز




الرد }}}
تم الشكر بواسطة: larbihamri , larbihamri , عبد العزيز البسكري


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] MULTI LINE AMAZ1972AMAZ 0 206 15-12-22, 03:55 PM
آخر رد: AMAZ1972AMAZ
Information كيف أتمكن من إنتظار مهام متعددة Threading.Tasks.Task حتى تنتهي جميعها Othman Al Zamani 2 688 05-11-22, 07:42 AM
آخر رد: Othman Al Zamani
Photo Multi Layer On picturebox mom22jo 3 589 23-08-22, 05:46 PM
آخر رد: Taha Okla
  إستعمال الخطوط الخارجيّة مع الوينداوز 10 عبد العزيز البسكري 9 2,775 29-07-20, 02:00 PM
آخر رد: عبد العزيز البسكري
  [ تمّ الحل ] : تساؤل حول إستعمال مكتبة الديف إكسبرس عبد العزيز البسكري 1 1,513 13-10-19, 02:06 AM
آخر رد: Rabeea Qbaha
  [VB.NET] ما الغاية من إستعمال كلمة Using sniperjawadino 0 1,157 06-10-19, 04:12 PM
آخر رد: sniperjawadino
  ممكن توضيح كيف يتم ايقاف Threading dametucorazon 1 1,472 25-04-19, 04:30 PM
آخر رد: elgokr
  [VB.NET] سؤال : الاستخدام الصحيح ل BackgroundWorker او Threading dubai.eig 11 4,285 05-10-17, 05:51 PM
آخر رد: silverlight
  [VB.NET] مشكلة بسيطة في برنامج بسيط يعتمد على( Multi-Threading) أبو نقطة 5 2,990 13-05-17, 07:41 AM
آخر رد: أبو نقطة
Exclamation Multi Column Combobox Vb.Net Kian Tech 3 2,998 26-08-16, 05:53 PM
آخر رد: Kian Tech

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم