小编Inv*_*con的帖子

使用当前文化定义的12或24小时格式从DateTime获取一天中的小时

.Net具有内置的DateTime ToShortTimeString()函数,该函数使用CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern格式.它会为en-US返回类似的内容:"下午5:00".对于像de-DE这样的24小​​时文化,它将返回"17:00".

我想要的是一种方法,只需返回适用于每种文化的小时(上述案例中的"下午5点"和"17").什么是最好/最干净的方法?

谢谢!

.net c# culture datetime-format

10
推荐指数
1
解决办法
5999
查看次数

如何在SqlDataReader.Read()期间从死锁异常中恢复

我的.NET应用程序的事件日志显示它在从Sql Server读取时偶尔会出现死锁.这通常非常罕见,因为我们已经优化了查询以避免死锁,但它们有时仍会发生.在过去,我们在调用实例ExecuteReader上的函数时发生了一些死锁SqlCommand.为了解决这个问题,我们添加了重试代码,以便再次运行查询,如下所示:

//try to run the query five times if a deadlock happends
int DeadLockRetry = 5;

while (DeadLockRetry > 0)
{
    try
    {
        return dbCommand.ExecuteReader();
    }
    catch (SqlException err)
    {
        //throw an exception if the error is not a deadlock or the deadlock still exists after 5 tries
        if (err.Number != 1205 || --DeadLockRetry == 0)
            throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

这对于在初始查询执行期间发生死锁的情况非常有效,但现在我们在使用Read()返回的函数迭代结果时遇到死锁SqlDataReader.

同样,我并不关心优化查询,而只是尝试在极少数情况下恢复发生死锁.我在考虑使用类似的重试过程.我可以创建自己的继承的类,SqlDataReader只需Read使用重试代码覆盖该函数.像这样:

public class MyDataReader : SqlDataReader
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server deadlock

5
推荐指数
1
解决办法
5148
查看次数

标签 统计

.net ×2

c# ×2

culture ×1

datetime-format ×1

deadlock ×1

sql-server ×1