.Net具有内置的DateTime ToShortTimeString()函数,该函数使用CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern格式.它会为en-US返回类似的内容:"下午5:00".对于像de-DE这样的24小时文化,它将返回"17:00".
我想要的是一种方法,只需返回适用于每种文化的小时(上述案例中的"下午5点"和"17").什么是最好/最干净的方法?
谢谢!
我的.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)