我正在运行一个非线程应用程序,负责检查数据库中的文件,更新位置并将文件移动到新目录。
然而,每周一至周四至周六,我们的服务器包含SQL Server在晚上8:40重新启动。在晚上8:30到晚上9点或8-9,如果这更容易,我需要我的程序才能睡觉。
在那些日子晚上8点(或晚上8:30),我希望我的程序能够睡眠/等待/暂停直到晚上9点(我可以放心地假设重启将在此时完成)。
这很容易/可能吗?它可以在没有线程的情况下完成吗?如果我必须使用线程,那么对于从未使用线程的人来说,它很容易实现吗?
答案 0 :(得分:1)
詹姆斯,尝试/捕捉和使用不是互相排斥的。
如果您决定采用的方法是在SqlException上重试,那么不应该,但可以使用:
Thread.Sleep(1800000);
这将等待30分钟。然后你可以再试一次。我建议不要这样做,但这是一个快速,肮脏的选择。
这可能是useful。
您应该设计应用程序以处理数据库连接丢失的情况。您可以批量编写要编写的数据,并在重新建立连接后将其全部发送。
考虑将此重写为服务。也许您想记录连接问题。
try
{
using (SqlConnection sqlConnection = new SqlConnection(ConnectionProvider.ConnectionString(databaseName)))
{
using (SqlCommand command = new SqlCommand())
{
if (sqlConnection.State != System.Data.ConnectionState.Open)
{
sqlConnection.Open();
}
//command.configure etc...
command.ExecuteNonQuery();
}
}
}
catch (SqlException ex)
{
//retry
}