Я создаю приложение Winforms, которое выполняет несколько проверок для БД, содержащей конфиденциальные данные.
БД обновляется с высокой частотой 24/7, поэтому приложение будет проверять БД 24/7. Наивысшее требование, которое у меня есть, - это модульное приложение. Это означает, что если мне нужно добавить дополнительные проверки в приложение в будущем, я могу добавить это с большой уверенностью, что я не испорчу существующие проверки. Кроме того, каждая проверка должна иметь возможность включать / отключать ее самостоятельно.
Я подумал сделать это, создав дополнительную комбинацию Check Box & Timer для каждой проверки в приложении. Таким образом, любая дополнительная проверка является независимой (имеет собственный таймер и лог c), и добавление новой проверки не изменит ни одной строки кода в существующих проверках.
Код (тестовое приложение):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void check1CheckBox_CheckedChanged(object sender, EventArgs e)
{
check1Timer.Enabled = check1CheckBox.Checked;
}
private void check2CheckBox_CheckedChanged(object sender, EventArgs e)
{
check2Timer.Enabled = check2CheckBox.Checked;
}
private void check3CheckBox_CheckedChanged(object sender, EventArgs e)
{
check3Timer.Enabled = check3CheckBox.Checked;
}
private void check1Timer_Tick(object sender, EventArgs e)
{
check1(); //check DB data
}
private void check2Timer_Tick(object sender, EventArgs e)
{
check2(); //check DB data
}
private void check3Timer_Tick(object sender, EventArgs e)
{
check3(); //check DB data
}
}
У меня есть 2 вопроса: 1. Если в методе, описанном выше, каждая проверка независима и не имеет возможности прервать / связать с другими проверками? 2. Какова «стоимость» добавления множества таймеров (10+), запущенных в одно и то же время, либо в режиме стабильности / отзывчивости / времени?
Ни один из таймеров не будет блокировать форму в течение длительного времени, каждый длительный вызов БД будет Asyn c (при ожидании вызовов).
На практике: большинство проверок должны выполняться с частотой 2-5 секунд, максимальная частота будет каждую секунду. Каждый чек имеет свою частоту и проверяем.
Спасибо.