Возможное (далеко не идеальное) решение для кода:
При запуске метода метода кодируйте его как цикл, который завершается, когда у вас есть соединение.Затем в этом цикле перехватывайте любые ошибки соединения с базой данных и продолжайте повторять попытки, как показано на следующем псевдокоде:
bool connected = false;
while (!connected)
{
try
{
connected = openDatabase(...);
}
catch (connection error)
{
// It might be worth waiting for some time here
}
}
Это означает, что ваша программа не будет работать, пока у нее не будет соединения.Однако это также может означать, что ваша программа никогда не выйдет из этого цикла, поэтому вам потребуется какой-либо способ ее завершения - либо вручную, либо после определенного числа попыток.
Поскольку вам нужен сервис для запускав разумные сроки этот код не может перейти в основную инициализацию.Вы должны принять меры к тому, чтобы ваша программа успешно «запускалась», но не выполняйте никакой обработки, пока этот метод не вернет connected = true
.Этого можно добиться, поместив этот код в поток, а затем запустив фактический код приложения в событии «Завершить поток».