强制我的控制台应用程序进入睡眠/暂停/休眠状态

时间:2013-10-07 18:19:25

标签: c#

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

然而,每周一至周四至周六,我们的服务器包含SQL Server在晚上8:40重新启动。在晚上8:30到晚上9点或8-9,如果这更容易,我需要我的程序才能睡觉。

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

这很容易/可能吗?它可以在没有线程的情况下完成吗?如果我必须使用线程,那么对于从未使用线程的人来说,它很容易实现吗?

1 个答案:

答案 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
}