0

我正在运行一个非线程应用程序,该应用程序负责检查数据库中的文件、更新位置并将文件移动到新目录。

但是,每周一、周四、周六,我们包含 SQL Server 的服务器会在晚上 8:40 重新启动。在晚上 8:30 到晚上 9:00 或从 8 点到 9 点,如果这样更容易的话,我需要我的程序睡觉。

在那些日子晚上 8 点(或晚上 8:30),我希望我的程序休眠/等待/暂停到晚上 9:00(我可以放心地假设重启将在此时完成)。

这容易/可能吗?不穿线可以吗?如果我必须使用线程,对于从未使用过线程的人来说是否容易实现?

4

1 回答 1

1

James, Try / Catch 和 using 并不相互排斥。

如果您决定采用的方法是重试 SqlException,您不应该,但可以使用:

Thread.Sleep(1800000);

这将等待 30 分钟。然后你可以再试一次你的电话。我建议不要这样做,但这是一个快速而肮脏的选择。

这可能很有用

您应该设计您的应用程序来处理数据库连接丢失的情况。您可以批量处理您打算写入的数据,并在重新建立连接后将其全部发送。

考虑将其重写为服务。也许您想记录连接问题。

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
}
于 2013-10-07T19:07:53.230 回答