c# Проверка доступности БД
Есть ли возможность как-нибудь в цикле постоянно проверять доступ к базе данных? (mc access)
Написал вот такой код для проверки соединения при включении программы, но можно-ли как-нибудь его проверять, например, каждые 5 секунд без особой нагрузки на компьютер (как-нибудь...в отдельном может потоке... или цикле, который не будет убивать компьютер)
public static bool CheckDB()
{
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Product.mdb;";
OleDbConnection myConnection = new OleDbConnection(connectString);
try
{
myConnection.Open();
myConnection.Close();
return true;
}
catch
{
return false;
}
}
private void MainForm_Load(object sender, EventArgs e)
{
if (CheckDB() == true)
{
metroLabel1.Text = "Соединение с базой: Установлено";
}
else
{
metroLabel1.Text = "Соединение с базой: Не установлено";
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Нет смысла проверять соединение каждые 5 секунд, это ни от чего не защитит, так как оно может умереть между проверками, и всё сломается.
По поводу асинхронности, почитайте Асинхронное программирование.
Для разовой проверки сойдёт и такой код:
const string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Product.mdb;";
public static async Task<bool> CheckDBAsync()
{
using OleDbConnection myConnection = new OleDbConnection(connectString);
try
{
await myConnection.OpenAsync();
return true;
}
catch
{
return false;
}
}
private async void MainForm_Load(object sender, EventArgs e)
{
metroLabel1.Text = "Соединение с базой: Проверяется";
if (await CheckDBAsync())
{
metroLabel1.Text = "Соединение с базой: Установлено";
}
else
{
metroLabel1.Text = "Соединение с базой: Не установлено";
}
}