Imports System.Threading
Imports System.IO
Imports System.Data.SqlClient
Imports System.Net.Sockets
Public Class Form1
Dim TchkAGV As System.Threading.Timer
Dim call_back_to As TimerCallback
Dim StreamWriter As StreamWriter
Dim comm As String
Dim strReceiveAGV As String = "HOME"
Dim intA As Integer
Dim strB As String
Private Sub callt0(ByVal state As Object)
Try
TchkAGV.Dispose()
Catch ex As Exception
End Try
Try
If intA = 1 Then
driveAGV(strB)
StreamWriter = New StreamWriter("c:\writeThreading.txt", True) ''; //ใส่ PathFile ลงไปเลยครับ
StreamWriter.WriteLine(driveAGV(strB)) ''; // จะเขียนอะไรละครับ ใส่ไรก็ได้ที่เป็น Stirng
StreamWriter.Close() ''; //อย่าลืมสั่งปิดด้วยนะครับ
intA = 0
Else
strReceiveAGV = driveAGV("0")
End If
'call_back_to = AddressOf callt0
' Me.t0 = New Threading.Timer(AddressOf callt0, Nothing, 2000, 1000)
TchkAGV = New Threading.Timer(call_back_to, Nothing, 1000, 2000)
' Catch exsql As SqlCeException
' MsgBox(exsql.Message, MsgBoxStyle.Exclamation)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
TchkAGV = New Threading.Timer(call_back_to, Nothing, 1000, 2000)
End Try
End Sub
Function driveAGV(ByVal lineNO As String) As String
' Dim sBuf(4) As Byte
' Dim rLen, rInPut, sInput As UInteger
' TimerCheckbitReCeive.Interval = 5
'Dim comm As String = lineNO
comm = lineNO
Dim returndata As String
returndata = ""
Dim tcpClient As New TcpClient
Dim strIP As String
Dim Client = New TcpClient() '50650
Try
Client = New TcpClient("192.168.0.188", 80)
'Client = New TcpClient("192.168.10.3", 445)
'tcpClient.Connect(IP, Port)
strIP = "Ping is OK"
Catch err As Exception
strIP = "Ping not OK"
End Try
If strIP = "Ping not OK" Then
returndata = "0000"
Else
returndata = strIP
End If
Return returndata
End Function
Private Sub timerNormal_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timerNormal.Tick
StreamWriter = New StreamWriter("c:\writeNoamal.txt", True) ''; //ใส่ PathFile ลงไปเลยครับ
StreamWriter.WriteLine("Write Data Noamal") ''; // จะเขียนอะไรละครับ ใส่ไรก็ได้ที่เป็น Stirng
StreamWriter.Close() ''; //อย่าลืมสั่งปิดด้วยนะครับ
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
timerNormal.Enabled = True
call_back_to = AddressOf callt0
'Dim callt0 As System.Threading.TimerCallback(AddressOf task1)
TchkAGV = New Threading.Timer(call_back_to, Nothing, 1000, 2000)
End Sub
Private Sub TimerchkAGV_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerchkAGV.Tick
Select Case strReceiveAGV(2)
Case "0"
chkLabel()
End Select
txtStatusAGV1.Text = strReceiveAGV
txtStatusAGV2.Text = comm
End Sub
Sub chkLabel()
intA = 1
strB = "iV01"
strReceiveAGV = "HOME"
End Sub
End Class
ตามตัวอย่าง Code ด้านบน ผมลองเขียนโปรแกรมโดยใช้ System.Threading.Timer กับ Timer ธรรมดา เพื่อเขียน File ลงที่ Textfile แต่มีปัญหาอยู่ว่า เมื่อมันทำงานได้สักครู่ถึงเวลาที่มันเขียนพร้อมกันครับ ทำให้มัน ขึ้น Error ดังนี้ครับ -----because it is being used by another process. เรามีวิธีแก้หรือเปล่าครับ