Author Topic: ขอถามเรื่อง Thread ใน VB หน่อยครับ  (Read 2938 times)  Share 

0 Members and 1 Guest are viewing this topic.

Offline ^DoppLer 2 SulPhaTe^

  • นักศึกษาปริญญาตรี
  • พระเจ้าจอร์ช มันขุดได้ยอดมากเลย
  • *
  • Posts: 2,307
  • Karma: +0/-0
  • Gender: Male
  • รักเพื่อน เคารพพี่ ดูแลน้อง ตอบแทนผู้มีพระคุณ
ผมใช้ vb .net 2005

Code: [Select]
Imports System.Threading

Public Class Form1

    Dim t As Thread

    Sub test()

        Text1.AppendText("eartH")

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        t = New Thread(AddressOf Me.test)
        t.Start()
    End Sub
End Class

ทำไมเวลารันแล้ว พอคลิกปุ่ม มันจะเกิด error ที่  Text1.AppendText("eartH") หละครับ

จะอ้าง Text1 ให้ถูกต้อง ต้องอ้างยังไงครับ

Offline Lord of the king

  • นักศึกษาปริญญาตรี
  • ไอทีเฟรชชี่
  • *
  • Posts: 92
  • Karma: +0/-0
  • Gender: Male
  • What ever will be will be
ถ้าน้องอยากรัน Thread แล้วให้ทำการ Set ค่าเข้า TextBox
ตอนนี้มันจะเกิด cross thread error คือ TextBox มันมี Thread ครองการใช้งานอยู่
ถ้าตามหลักของ OS ก็ต้องทำให้ TextBox มีคุณสมบัติเป็น Share ก่อน ซึ่งพี่ก็ไ่ม่รู้เหมือนกันว่า VB เค้าใช้ Keyword อะไร
แต่ถ้าอยากแค่ Set ค่าเข้า TextBox ก็ใช้โค้ดตามนี้เลย

Code: [Select]
Imports System.Threading
Public Class Form1

    Private text As String

    Private Sub Test()
        text = "Hello"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim t As Thread
        t = New Thread(AddressOf Test)
        t.Start()
        t.Join()
        TextBox1.AppendText(text)
    End Sub
End Class

ก็ set ค่าเข้าตัวแปรก่อน แล้วค่อยนำมา set เข้าตอนรัน Thread เสร็จ
t.Join จะทำให้ Thread ทำงานเสร็จก่อนแล้วค่อยทำด้านล่างนะ
La la lA.......