我有一个 for 循环,它循环并每个循环发送一封电子邮件。现在我正在使用 thread.sleep() 但我希望用户仍然能够与程序交互,只需取消该循环即可。是否可以在不使用 thread.sleep 的情况下做到这一点?
您是否在 UI 线程上运行循环?如果是这样,只需使用 Task.Factory.StartNew 在不同的线程中运行循环。如果您当时需要延迟电子邮件发送,请在实际开始循环之前放置 Thread.Sleep。
它看起来像这样:
private void OnButtonClick(object sender, EventArgs e)
{
//This code happens on the UI thread
Task.Factory.StartNew(SendEmails);
}
private void SendEmails()
{
Thread.Sleep(500);
foreach(var email in emailAddresses) {
SendEmail(email);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)