[英]Using Sleep in VB.NET
我有一个简单的问题,我有一段代码发送测试电子邮件,就在此过程即将发生之前,我希望出现一个选取框进度条,表明正在发生某种情况。
但是,在发送测试电子邮件之前,进度条不会出现。
我已经尝试过使用“睡眠”功能,但是直到发送测试电子邮件后,进度条仍然不会出现。
有人知道为什么吗?
代码:(注意:GroupBoxTesting包含进度条)
Private Sub BTMsendmailtest_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTMsendmailtest.Click
GroupBoxTesting.Visible = True
Threading.Thread.Sleep(500)
Try
Dim Mail As New MailMessage
Mail.Subject = "Test email for Email Alerts!"
Mail.To.Add(TXTemailaddy.Text)
Mail.From = New MailAddress(TXTsmtpusr.Text)
Mail.Body = "This is a test message from Email Alerts!" & Environment.NewLine & Environment.NewLine & "If you are reading this, then Email Alerts! is properly configured."
Dim SMTP As New SmtpClient(TXTsmtpsvr.Text)
If CHKEnableSSL.Checked = True Then
SMTP.EnableSsl = True
Else
SMTP.EnableSsl = False
End If
SMTP.Credentials = New System.Net.NetworkCredential(TXTsmtpusr.Text, TXTsmtppwd.Text)
SMTP.Port = TXTsmtpport.Text
SMTP.Send(Mail)
SendingPB.Value = False
MessageBox.Show("A test email has been sent to " & TXTemailaddy.Text & " from " & TXTsmtpusr.Text & "." & Environment.NewLine & Environment.NewLine & "If you did not recieve an email, please check your settings and try again.", "Test Email")
GroupBoxTesting.Visible = False
Catch ex1 As Exception
SendingPB.Value = False
GroupBoxTesting.Visible = False
MessageBox.Show(ex1.Message)
Return
End Try
End Sub
您已告知UI线程(当前正在运行代码的线程)进入睡眠状态,因此它进入睡眠状态并且在指定时间内不执行任何操作。 即使没有Sleep
,也可能是UI线程太忙于发送电子邮件以更新字幕进度条的显示。
您可以使用BackgroundWorker发送电子邮件,也可以使用SmtpClient.SendAsync方法 。 后者包括一个例子。 我如何异步发送电子邮件中还有另一个示例? 。
在处理和写入超过20,000行时,将Excel Automation与VB.Net应用程序一起使用时出现错误。 我使用此代码解决了该问题。
' ---- Write the Row to the Worksheet
Threading.Thread.Sleep(1000)
lstrStartingColRow = "A" & mlngIdx.ToString
If .InsertArrayIntoRow(istrWorksheetName:=lstrWorksheetName,
istrStartingCell:=lstrStartingColRow,
istrArrayOfData:=mstrExcelRow) = False Then
Throw New Exception("Insert Error *************************")
End If
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.