Thread
自創一個執行緒,以背景方式執行:
http://a0tim.github.io/2015/11/net-thread/
https://vimsky.com/zh-tw/examples/detail/vbnet-class-system.threading.thread.html
※在應用程式中,以Gmail寄信會花一點時間,導致UI反應變鈍鈍的,此時可以考慮以Thread背景方式寄發信件。
第一步、引入 System.Thraeding
於Public Class Form1之前輸入Imports System.Threading
第二步、宣告Thread Class
在Public Class Form1的後面,宣告一個執行緒物件名稱,例如:
Public Class ThreadSend
Public Shared Sub ThreadProc()
執行的背景指令
Thread.Sleep(0)
End Sub
End Class
※注意:不可以宣告在Public Class Form1之前,換言之、Public Class Form1必須是第一個類別。
第三步、建立呼叫程序
在Public Class Form1內,建立一個呼叫Thread程序,例如:
Private Sub MailThraed()
Dim t As New Thread(AddressOf ThreadSend.ThreadProc)
t.Start()
t.Join() '同時多個Thread接續執行才需要,會稍微拖慢螢幕物件處理反應時間。
End Sub
※AddressOf會幫Thread建立一個新的執行緒。
執行緒宣告範例:
Public Class ThreadSend
Public Shared Sub ThreadProc()
Try
Dim cred As New NetworkCredential(EmailFrom, EmailPassword)
Dim eMail As New MailMessage()
'收件者
eMail.[To].Add(StudentEmail)
eMail.Subject = "K書中心" & InOutName & sysDate & sysTime
'寄件者
eMail.From = New MailAddress(EmailFrom, "圖書館-岡山高中")
eMail.IsBodyHtml = True
eMail.Body = "這是岡山高中K書中心,進出圖書館K書中心簽到、簽退資料,<br>"
eMail.Body &= "閣下於" & sysDate & "、" & sysTime
If InOutName = "簽到進入" Then
eMail.Body &= "<Font Color='Blue'>"
Else
eMail.Body &= "<Font Color='Red'>"
End If
eMail.Body &= InOutName & "</Font>K書中心。<br><br>"
eMail.Body &= "國立岡山高中 啟<br>"
eMail.Body &= "※ 系統自動發信,請勿回覆!! ※<br>"
'設定SMTP
Dim smtp As New SmtpClient("smtp.gmail.com")
smtp.UseDefaultCredentials = False
smtp.EnableSsl = True
smtp.Credentials = cred
smtp.Port = 587
'送出Mail,需啟用GMail安全性較低的應用程式存取權(https://myaccount.google.com/lesssecureapps)
smtp.Send(eMail)
smtp.Dispose()
Catch error_t As Exception
MsgBox(error_t.ToString)
End Try
Thread.Sleep(0)
End Sub
End Class