gpt4 book ai didi

c# - 如何在 while 循环中进行 sleep ?

转载 作者:行者123 更新时间:2023-12-03 08:09:36 26 4
gpt4 key购买 nike

我正在尝试每 30 分钟发送一次电子邮件。在一个while循环内。

while (true)
{
System.Threading.Thread.Sleep(1);
ReadInput();
Application.DoEvents();

MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
System.Threading.Thread.Sleep(2000);
mail.From = new MailAddress("");
mail.To.Add("");
mail.Subject = "Test Mail";
mail.Attachments.Add(new System.Net.Mail.Attachment("C://Users//matte//test.txt"));
mail.Body = "This is for testing SMTP mail from GMAIL";

SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("", "");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
System.Threading.Thread.Sleep(10000);
}

我试过冷静下来,但电子邮件一直在发送而没有 sleep 。我怎样才能做到这一点。这样电子邮件每 30 分钟发送一次?

最佳答案

sleep 功能以毫秒为单位接收时间量,因此它现在正在等待。

public static void Sleep (int millisecondsTimeout);

无论如何, sleep 不是您可以使用的最佳选择,因为它会阻止正在运行的进程。我会在发送电子邮件时使用日期时间并比较 System.DateTime.Now使用此值,因此程序会继续响应,您可以等待检查两个日期时间之间的时间是否足够。
DateTime LastSend = System.DateTime.Now;

while (true)
{
if (LastSend.AddMinutes(30) > System.DateTime.Now)
continue;
... your process ...
LastSend = System.DateTime.Now;
}

希望能帮助到你!

关于c# - 如何在 while 循环中进行 sleep ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61291439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com