Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ใช้ BackgroundWorker และ Progressbar ใน Mdi Form ผมใช้ BackgroundWorker และ Progressbar ใน Mdi Form



 

ใช้ BackgroundWorker และ Progressbar ใน Mdi Form ผมใช้ BackgroundWorker และ Progressbar ใน Mdi Form

 



Topic : 024694

Guest




ผมใช้ BackgroundWorker และ Progressbar ใน Mdi Form แล้วมันเกิด Error
"Cross-thread operation not valid: Control 'StatusStrip1' accessed from a thread other than the thread it was created on" ไม่รู้ว่าจะแก้ยังงัย code ข้างล่างนี้เป็น code ส่วน mdi form ที่รับToolStripProgressBar มาจาก Form main ครับแล้วเกิด Error ที่ m.Visible = True

Code (VB.NET)
#
Public Frmparent As Form1
    Dim m As ToolStripProgressBar
    Dim worker As System.Threading.Thread ' Thread


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        m = Frmparent.ToolStripProgressBar1
    End Sub

    Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        m.Visible = True
        For i As Integer = 0 To 10000000
            Dim k As New ArrayList
            k.Add(i)
        Next
        MsgBox("o")
    End Sub
#




Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-02-12 11:01:41 By : Tanakorn View : 6098 Reply : 4
 

 

No. 1



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์









Date : 2009-02-27 14:46:00 By : shoichi_10
 


 

No. 2



โพสกระทู้ ( 371 )
บทความ ( 0 )



สถานะออฟไลน์


ใน Event Handler ชื่อ BackgroundWorker1_DoWork (Event DoWork ของ BackgroundWorker)
ห้ามมีการ Set ค่าของ control นะครับ เพราะว่าการ set ค่าของ control จะเกิดการ RePaint ของ Form (แล้วการ Repaint ของ form จะมีการเรียก Thread ในการ Paint) ดังนั้น ถ้าจะแก้คือ ต้องเป็นประมาณนี้

Code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
m.Visible = True <== ย้ายมาวางตรงนี้
BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m = Frmparent.ToolStripProgressBar1
End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
[m.Visible = True] <== ย้ายออกไป
For i As Integer = 0 To 10000000
Dim k As New ArrayList
k.Add(i)
Next
MsgBox("o")
End Sub

Date : 2009-03-24 15:55:14 By : jezusmitsui
 

 

No. 3



โพสกระทู้ ( 371 )
บทความ ( 0 )



สถานะออฟไลน์


แง่มๆๆ ผมลืมไปนิดว่า ตอนจังหวะที่คุณเรียก MsgBox("o") ให้ไปวางไว้ใน RunWorkerCompleted นะครับ (ผมไม่ได้ดู) ดังนั้น Code ที่แก้สมบูรณ์จะเป็นประมาณนี้

Code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
m.Visible = True
BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m = Frmparent.ToolStripProgressBar1
End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim k As New ArrayList
For i As Integer = 0 To 10000000
  k.Add(i)  
Next
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
Handles BackgroundWorker1.RunWorkerCompleted
   If e.Error is Nothing Then
      MsgBox("Work is Completed")
   Else
       MsgBox(String.Format("Work fail with error: {0}",e.Error.Message))
   End If
End Sub

Date : 2009-03-24 16:02:56 By : jezusmitsui
 


 

No. 4

Guest


ขอบคุณครับ
Date : 2009-07-14 10:43:48 By : ww
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ใช้ BackgroundWorker และ Progressbar ใน Mdi Form ผมใช้ BackgroundWorker และ Progressbar ใน Mdi Form
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่