تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إستعمال ال Multi Threading
#1
السّلام عليكم و رحمة الله و بركاته
سادتي الأفاضل
لديّ 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


الرد
تم الشكر بواسطة: ابو ليلى
#2
وعليكم السلام ورحمة الله وبركاته
فى البداية تفضل الاطلاع على هذا الرابط للاطلاع 
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
الرد
#3
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء أخي الكريم kiki
سأحاول العمل بما هو برابط اليوتوب و إن شاء الله يحصل خير
تحياتي و احتراماتي
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#4
السّلام عليكم و رحمة الله و بركاته
أحيانا الواحد منّا يقوم من نومه من فراشه جريا إلى هذا المنتدى عسى أن يجيب أو يسأل أو يشارك بحل أو حتى بربع فكرة
و موضوعي ..
أيّام عديدة و مشروعي معطّل .. لا حتّى من سأل عليه
حسبي الله و نعم الوكيل
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#5
السلام عليكم ورحمة الله و بركاته
الاخ عبد العزيز البسكري.
ما الذي تريد عمله بالضبط انا لم افهم الغاية من الطلب
لو فصلت اكثر في الغاية المطلوبة ربما وجدنا الحل.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#6
السّلام عليكم و رحمة الله و بركاته
أستاذنا الكريم .. أبو ليلى
كل الشكر و المحبة و الإحترام
القصّة .. و ما فيها ..
لدي MDIParent1 و بها أداة WebBrowser1 تعرض نص متحرّك
إلى هنا .. كله تمام و الحمد لله
المشكلة .. لما أضغط عن زر الامر بال MDIParent1 لإظهار الفورم 1 .. يتوقّف النص المتحرك لغاية ظهور الفورم 1 فيعيد نشاطه
قد تلاحظ بهذا المثال توقّف النص المتحرك توقف طفيف لكن لما تكون بيانات الفورم 1 كثيرة و مع أدوات الديف إكسبرس .. التوقف يصبح بشكل فضيع
ما أريده .. أضغط على زر الامر لإظهار الفورم 1 بدون توقف النص المتحرك بال MDIParent1
جربت جميع طرق
Multi Thread
كن ما ضبطت أو ربما لم أعرف إستخدامها
تحياتي و احتراماتي


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 105.51 ك ب / التحميلات : 14)
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#7
عليكم السلام ورحمة الله وبركاته ..

واقعا هذا شيئ طبيعي ان يتوقف الانميشن داخل اداة الويب براوزر لان الثريد الاساسي (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/
الرد
تم الشكر بواسطة: عبد العزيز البسكري , ابو ليلى
#8
السّلام عليكم و رحمة الله و بركاته
و الله أستاذنا الكريم الشاكي للّه
حصل معي كومة أخطاء .. لم أعرف من أين أصلحها
لو تكرمت بالنظر للصورة المرفقة
بارك الله فيك و لك و جزاك خير الجزاء
إحتراماتي
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#9
اعتقد لو نقلت الاكواد الي داخل function الى فنكشن منفصلة ممكن يضبط

يعني جدي : 

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



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

كود :
   Dim _thread As Thread = New Thread(AddressOf OpenForm2)
الرد
تم الشكر بواسطة: عبد العزيز البسكري , ابو ليلى
#10
تقصد بهذا الشكل أستاذنا القدير ..
كود :
  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 ) ضيف كريم