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 = "Соединение с базой: Не установлено";
    }
}
→ Ссылка