تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
بخصوص اداة BackgroundWorker
#1
السلام عليكم ورحمة الله وبركاته..
لدى كود يقوم بالتحقق من وجود تحديثات للبرنامج أم لا .
وهذا الكود بضعه داخل اداة BackgroundWorker وبضع فى الفورم لود هذا الكود

كود :
Control.CheckForIllegalCrossThreadCalls = False
       BackgroundWorker1.RunWorkerAsync()


لكن دائما يحدث مشاكل هكذا وللأسف لم أجد لها حل

الرد }}}
تم الشكر بواسطة: سعود
#2
(17-02-20, 05:24 PM)ابو روضة كتب :
السلام عليكم ورحمة الله وبركاته..
لدى كود يقوم بالتحقق من وجود تحديثات للبرنامج أم لا .
وهذا الكود بضعه داخل اداة BackgroundWorker وبضع فى الفورم لود هذا الكود

كود :
Control.CheckForIllegalCrossThreadCalls = False
       BackgroundWorker1.RunWorkerAsync()


لكن دائما يحدث مشاكل هكذا وللأسف لم أجد لها حل


المشلكة تدور عن محاولة التعامل مع كائن قيد الاستخدام

ضع الكود الموجود في BackgroundWorker1_DoWork لتتضح المشكله
الرد }}}
تم الشكر بواسطة: سعود
#3
إقتباس :المشلكة تدور عن محاولة التعامل مع كائن قيد الاستخدام

ضع الكود الموجود في BackgroundWorker1_DoWork لتتضح المشكله

منا فعلا وضعته بهذا المكان أخى
الرد }}}
تم الشكر بواسطة:
#4
(18-02-20, 11:36 AM)ابو روضة كتب :
إقتباس :المشلكة تدور عن محاولة التعامل مع كائن قيد الاستخدام

ضع الكود الموجود في BackgroundWorker1_DoWork لتتضح المشكله
منا فعلا وضعته بهذا المكان أخى

لكن هذا الكود لا يوضع في BackgroundWorker1_DoWork

عاده يتم وضعهما في Form1_Load خصوصا السطر الاول

السطر الثاني ربما تحتاج تضعه في حدث زر اذا كنت لا تريد تشغيل BackgroundWorker في بداية الفورم
الرد }}}
تم الشكر بواسطة: سعود
#5
(18-02-20, 11:49 AM)alsalamoni كتب : لكن هذا الكود لا يوضع في BackgroundWorker1_DoWork

عاده يتم وضعهما في Form1_Load خصوصا السطر الاول

السطر الثاني ربما تحتاج تضعه في حدث زر اذا كنت لا تريد تشغيل BackgroundWorker في بداية الفورم

بحاول معاها وإن شاء الله نصل لحل لها...
ألم يوجد عند حضرتك حل أخر كالثريد مثلا ؟
وهذا هو الكود الذى اريد التحقق منه عند بداية تشغيل الفورم

كود :
Dim ox As New WebClient
       ox.Encoding = Encoding.UTF8
       Dim txt As String = ox.DownloadString(uri)
       Label1.Text = txt
الرد }}}
تم الشكر بواسطة: سعود
#6
(18-02-20, 12:08 PM)ابو روضة كتب :
(18-02-20, 11:49 AM)alsalamoni كتب : لكن هذا الكود لا يوضع في BackgroundWorker1_DoWork

عاده يتم وضعهما في Form1_Load خصوصا السطر الاول

السطر الثاني ربما تحتاج تضعه في حدث زر اذا كنت لا تريد تشغيل BackgroundWorker في بداية الفورم

بحاول معاها وإن شاء الله نصل لحل لها...
ألم يوجد عند حضرتك حل أخر كالثريد مثلا ؟
وهذا هو الكود الذى اريد التحقق منه عند بداية تشغيل الفورم

كود :
Dim ox As New WebClient
       ox.Encoding = Encoding.UTF8
       Dim txt As String = ox.DownloadString(uri)
       Label1.Text = txt

كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   Control.CheckForIllegalCrossThreadCalls = False
   BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Try
       Dim ox As New WebClient
       ox.Encoding = Encoding.UTF8
       Dim txt As String = ox.DownloadString(Uri)
       Label1.Text = txt
   Catch ex As WebException
       Label1.Text = "?"
   End Try
End Sub
الرد }}}
تم الشكر بواسطة: ابو روضة , سعود
#7
(18-02-20, 12:19 PM)alsalamoni كتب :
كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   Control.CheckForIllegalCrossThreadCalls = False
   BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Try
       Dim ox As New WebClient
       ox.Encoding = Encoding.UTF8
       Dim txt As String = ox.DownloadString(Uri)
       Label1.Text = txt
   Catch ex As WebException
       Label1.Text = "?"
   End Try
End Sub

الله يبارك بعمرك أخى الكريم فنان ماشاء الله...
جربت فكرتك الأولى ونفعت فعلا بأن أضع الكود الثانى داخل الزر وفعلا نجحت
ووضعت هذا فقط داخل اللود
..
Control.CheckForIllegalCrossThreadCalls = False
وسأقوم الآن بتجربة هذا الكود أيضاً بأمر الله..
أشكرك شكراً كثيراً أخى وربنا يسعدك.
الرد }}}
تم الشكر بواسطة: سعود
#8
(18-02-20, 12:27 PM)ابو روضة كتب :
(18-02-20, 12:19 PM)alsalamoni كتب :
كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   Control.CheckForIllegalCrossThreadCalls = False
   BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Try
       Dim ox As New WebClient
       ox.Encoding = Encoding.UTF8
       Dim txt As String = ox.DownloadString(Uri)
       Label1.Text = txt
   Catch ex As WebException
       Label1.Text = "?"
   End Try
End Sub

الله يبارك بعمرك أخى الكريم فنان ماشاء الله...
جربت فكرتك الأولى ونفعت فعلا بأن أضع الكود الثانى داخل الزر وفعلا نجحت
ووضعت هذا فقط داخل اللود
..
Control.CheckForIllegalCrossThreadCalls = False
وسأقوم الآن بتجربة هذا الكود أيضاً بأمر الله..
أشكرك شكراً كثيراً أخى وربنا يسعدك.

العفو اخي
الرد }}}
تم الشكر بواسطة: سعود
#9
سؤال أخير لو تسمح بعيد عن عنوان الموضوع لكنه يخص مشروعى أيضاً:-
كيف أجعل ما يتم نسخه من روابط يتم وضعه داخل الخانة الموجودة فى ال InputBox
يعنى مثلا اذا نسخت رابط به كلمة playlists يتم وضع المنسوخ داخل InputBox
الرد }}}
تم الشكر بواسطة: سعود
#10
(18-02-20, 12:33 PM)ابو روضة كتب :
سؤال أخير لو تسمح بعيد عن عنوان الموضوع لكنه يخص مشروعى أيضاً:-
كيف أجعل ما يتم نسخه من روابط يتم وضعه داخل الخانة الموجودة فى ال InputBox
يعنى مثلا اذا نسخت رابط به كلمة playlists يتم وضع المنسوخ داخل InputBox

كود :
Dim dd As String = ""
If Clipboard.GetText.StartsWith("http") And Clipboard.GetText.Contains("playlists") Then dd = Clipboard.GetText
Dim ss = InputBox("", "", dd)

تم تحسين الكود
الرد }}}
تم الشكر بواسطة: سعود



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


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