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