Ошибка в том, что вы неправильно кодируете использование сервиса. Но это не ваша главная проблема в этом случае. Это ложное срабатывание, и вам все равно нужно найти основную ошибку.
Для Windows службы метод OnStart
следует использовать только для запуска вашего процесса, а не для запуска кода, который будет выполнять обработку. сама.
Служба имеет следующие состояния как часть своего жизненного цикла
- Работает
- Приостановлено
- Остановлено
Метод OnStart должен перевести службу из состояния «Остановлено» или «Приостановлено» (если поддерживается) в состояние «Выполнено» и должен возвращаться довольно быстро.
Поэтому первым делом необходимо переместить код в отдельный поток. Даже если он выполняется только один раз.
protected override void OnStart(string[] args)
{
var task = Task.Run(() =>{
Write();
});
}
Затем обновите метод Write, чтобы перехватывать исключения, используйте параметры, а затем зарегистрируйте ошибку
try
{
using (MySqlConnection connection = new MySqlConnection("Host=--;User=--;Password=--;Database=--;Convert Zero Datetime=True"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandType = System.Data.CommandType.Text;
command.CommandText = " UPDATE messured-values SET belong_to = @belong";
command.Parameters.Add("@belong", SqlDbType.VarChar).Value = "Doaa";
command.ExecuteNonQuery();
}
connection.Close();
}
}
catch(Exception e)
{
//Log e.Message to a Log output file for debug purposes/
}
Вам необходимо написать методы для вывода ошибка в файле журнала отладки или подобное.