ใช้Timerต่างเครื่อง ให้ผลลัพธ์แตกต่างกัน แก้ไขอย่างไร

ใช้Timerต่างเครื่อง ให้ผลลัพธ์แตกต่างกัน แก้ไขอย่างไร

ผมทำโปรเจคที่ต้องรับสัญญาณข้อมูลมาจากSerial Port ซึ่งข้อมูลจะถูกส่งมาทุกๆ0.5วินาที
โดยอาศัยอีเวนท์ DataReceiveของSerialPort ซึ่งตามที่ผมเข้าใจ คือ มันมีThreadในตัวมันเอง
ดังนั้น จึงไม่เกิดปัญหาใดๆ โปรแกรมสามารถเข้าอีเวนท์ DataReceive แบบRealtimeตามจังหวะของข้อมูลที่ได้รับจากSerial Port

แต่พอผมต้องการนำค่าที่ได้ไปSet ให้textboxบนหน้าจอ ปรากฏว่า มันerror เพราะว่าหน้าจอมันใช้Threadหลัก
พอใช้Timer.Tickerเข้ามาช่วยในการเซ็ทให้textboxบนหน้าจอทุก0.5วินาที  (Interval = 500)
ผลปรากฏว่า เมื่อนำไปใช้กับเครื่องUser มันTickช้ากว่าที่กำหนด Delayประมาณ3วินาทีหลังจากที่รับค่าจากอีเวนท์ DataReceive
ทั้งๆที่ตอนรันบนเครื่องที่ใช้เขียนโปรแกรมมันไม่มีปัญหา จึงสันนิษฐานว่า เพราะเครื่องของUser สเปคค่อนข้างต่ำ จึงส่งผลกับTimer

จึงอยากสอบถามว่า พอจะมีทางแก้อย่างไรสำหรับกรณีนี้ จะทำยังไงให้Timerของสองเครื่องมันให้ผลลัพธ์แบบเดียวกัน
และจะรู้ได้อย่างไรว่า แต่ละเครื่องสามารถTickที่Intervalต่ำสุดเท่าไหร่



-------[RESOLVED]----------------------------------------------------------------------------
ขออนุญาติEdit เพื่อใส่Resolvedนะครับ เปลี่ยนจากTimerไปใช้Delegateแทน ตามคำแนะนำของ ท่าน คห.3 และ 4
โค้ดที่ใช้    ประมาณนี้



Delegate Sub SetTextCallback(ByVal needValue As String)
       Private Sub SetText(ByVal needValuet As String)
            If Me.textBox.InvokeRequired Then
                Dim dlg As New SetTextCallback(AddressOf SetText)
                Me.Invoke(dlg, New Object() {needValue})
            Else
                Me.textBox.Text = needValue      
            End If
       End Sub
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่