منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : إستعمال ال Multi Threading
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4
السّلام عليكم و رحمة الله و بركاته
سادتي الأفاضل
لديّ MDIParent و به زر أمر لفتح فورم Form1 كمثال
لمّا أقوم بالضغط على زر الأمر لإظهار الفورم 1 .. يتوقف الشريط المتحرك لغاية ظهور الفورم 1
حاولت أعمل بهذه الطريقة لكن بدون فائدة
هل توجد طريقة أخرى للتجربة بارك الله فيكم
كود :
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       'Dim Th As New Threading.Thread(Sub() MyForm1Thread())
       'Th.Start()

       Dim Th As New Threading.Thread(AddressOf MyForm1Thread)
       Th.Start()


       'Try
       'Form1.ShowDialog()
       'Catch ex As Exception
       'XtraMessageBox.Show(ex.Message)
       'End Try

   End Sub
   Sub MyForm1Thread()
       Try
           Form1.ShowDialog()
       Catch ex As Exception
           XtraMessageBox.Show(ex.Message)
       End Try
   End Sub


وعليكم السلام ورحمة الله وبركاته
فى البداية تفضل الاطلاع على هذا الرابط للاطلاع 
http://vb4arb.com/vb/showthread.php?tid=5644
http://vb4arb.com/vb/showthread.php?tid=4737
وهذا الرابط سيقوم بما تريده لما يخص فتح الشاشة
https://www.youtube.com/watch?v=e8pK-XWfx88
ولا تنسي انك تستخدم ShowDialog وليس Show
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء أخي الكريم kiki
سأحاول العمل بما هو برابط اليوتوب و إن شاء الله يحصل خير
تحياتي و احتراماتي
السّلام عليكم و رحمة الله و بركاته
أحيانا الواحد منّا يقوم من نومه من فراشه جريا إلى هذا المنتدى عسى أن يجيب أو يسأل أو يشارك بحل أو حتى بربع فكرة
و موضوعي ..
أيّام عديدة و مشروعي معطّل .. لا حتّى من سأل عليه
حسبي الله و نعم الوكيل
السلام عليكم ورحمة الله و بركاته
الاخ عبد العزيز البسكري.
ما الذي تريد عمله بالضبط انا لم افهم الغاية من الطلب
لو فصلت اكثر في الغاية المطلوبة ربما وجدنا الحل.
السّلام عليكم و رحمة الله و بركاته
أستاذنا الكريم .. أبو ليلى
كل الشكر و المحبة و الإحترام
القصّة .. و ما فيها ..
لدي MDIParent1 و بها أداة WebBrowser1 تعرض نص متحرّك
إلى هنا .. كله تمام و الحمد لله
المشكلة .. لما أضغط عن زر الامر بال MDIParent1 لإظهار الفورم 1 .. يتوقّف النص المتحرك لغاية ظهور الفورم 1 فيعيد نشاطه
قد تلاحظ بهذا المثال توقّف النص المتحرك توقف طفيف لكن لما تكون بيانات الفورم 1 كثيرة و مع أدوات الديف إكسبرس .. التوقف يصبح بشكل فضيع
ما أريده .. أضغط على زر الامر لإظهار الفورم 1 بدون توقف النص المتحرك بال MDIParent1
جربت جميع طرق
Multi Thread
كن ما ضبطت أو ربما لم أعرف إستخدامها
تحياتي و احتراماتي
عليكم السلام ورحمة الله وبركاته ..

واقعا هذا شيئ طبيعي ان يتوقف الانميشن داخل اداة الويب براوزر لان الثريد الاساسي (UI Thread) مشغول بفتح الfom الجديدة ،

حل هذه المشكلة نظريا هو انك تفتح الform الجديدة بواسطة ثريد اخر (ولو انه لايفضل ذلك) ولكن هذا الحل الوحيد ربما لتجاوز هذه العقبة:

كود :
   Dim _thread As Thread = New Thread(Function()
                     Application.Run(New Form() With {.MdiParent = Form1})
                End Function)
   _thread.SetApartmentState(ApartmentState.STA)
   _thread.Start()

لم اجرب الكود ، ولكن نظريا المفروض يضبط.

موفقين


--

هناك حل اسهل ربما ، وانه انك تنشأ الويب براوزر (الي فيها النص المتحرك) بالكود وتضيفها للفورم ، حيث تقوم بانشائها باستخادم sta thread منفصل

شاهد هذا الرابط :
https://stackoverflow.com/questions/4269...new-thread

وللتحويل من السي شارب للفيجوال بيسك، استخدم هذا الموقع
https://converter.telerik.com/
السّلام عليكم و رحمة الله و بركاته
و الله أستاذنا الكريم الشاكي للّه
حصل معي كومة أخطاء .. لم أعرف من أين أصلحها
لو تكرمت بالنظر للصورة المرفقة
بارك الله فيك و لك و جزاك خير الجزاء
إحتراماتي
اعتقد لو نقلت الاكواد الي داخل function الى فنكشن منفصلة ممكن يضبط

يعني جدي : 

كود :
    Private Sub OpenForm2()
                     Application.Run(New Form() With {.MdiParent = Form1})
    End Sub



وعند تكوين الثريد يصبح هكذا:

كود :
   Dim _thread As Thread = New Thread(AddressOf OpenForm2)
تقصد بهذا الشكل أستاذنا القدير ..
كود :
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       'Dim _thread As Thread = New Thread(Function()
       '                                       Application.Run(New Form() With {.MdiParent = Form1})
       '                                   End Function)
       '_thread.SetApartmentState(ApartmentState.STA)
       '_thread.Start()

       Dim _thread As Thread = New Thread(AddressOf OpenForm1)

   End Sub

   Private Sub OpenForm1()
       Application.Run(New Form() With {.MdiParent = Form1})
   End Sub

الصفحات : 1 2 3 4