Почему у вас нет System.Timers.Timer, который срабатывает каждую секунду и посылает до десять сообщений из очереди сообщений каждую секунду.
Таким образом, вы действительно имеете полный контроль над процессом и не догадываетесь о скорости/тайминге отправителя электронной почты.
Возможно, что-то вроде этого:
public class EmailSender
{
private System.Timers.Timer _timer = new Timer(1000);
public EmailSender()
{
_timer.Elapsed += (object sender, ElapsedEventArgs args) => SendEmail();
}
public void StartSender()
{
_timer.Enabled = true;
}
public void SendEmail()
{
// you *may* want to stop your timer here in case the send of the ten overruns 1s.
_timer.Enabled = false;
// code here to send UP TO ten emails
// re-enable timer, if you stopped it above.
_timer.Enabled = true;
}
}
Короче - нет - ваш оригинальный подход не является хорошим.
- Откуда вы знаете, как долго спать, чтобы получить 10 сообщений?
- Что произойдет, если машина работает медленно?
- Что произойдет, если вы развернете машину быстрее?
- и т. Д.
10 сообщений в секунду? –
Надеюсь, вы не злоупотребляете этим, чтобы распространять спам-письма. – BlueM
nope. я буду отправлять еженедельные письма подписчикам. – Waqar