我们通过将Exception.Message写入文件来记录系统中发生的任何异常.但是,它们是在客户的文化中写成的.而土耳其的错误对我来说意义不大.
那么如何在不改变用户文化的情况下用英语记录任何错误消息呢?
以数据库独立的方式检查Sql数据库中是否存在表的最佳方法是什么?
我提出了:
bool exists;
const string sqlStatement = @"SELECT COUNT(*) FROM my_table";
try
{
using (OdbcCommand cmd = new OdbcCommand(sqlStatement, myOdbcConnection))
{
cmd.ExecuteScalar();
exists = true;
}
}
catch
{
exists = false;
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?当与数据库的连接失败时,此方法将不起作用.我已经找到了Sybase,SQL服务器,Oracle的方法,但没有任何适用于所有数据库的方法.
我已经安装了Visual Studio 2019,让我烦恼的第一件事是在删除所有工具栏后屏幕上方的黑色大空白空间。
但是,“实时共享”和“反馈”按钮并未显示为工具栏。
有没有一种方法可以通过删除这两个按钮来回收空白?
每次我将xsd文件添加到我的Visual Studio 2008构建项目时,其构建操作默认为"none".我经常忘记将这个用于"内容",这会影响构建......
无论如何将xsd文件的默认构建操作设置为"content"?
通常我们使用此代码:
private EventHandler _updateErrorIcons;
public event EventHandler UpdateErrorIcons
{
add { _updateErrorIcons += value; }
remove { _updateErrorIcons -= value; }
}
Run Code Online (Sandbox Code Playgroud)
是否有与自动属性类似的快捷方式?就像是:
public event EventHandler UpdateErrorIcons { add; remove; }
Run Code Online (Sandbox Code Playgroud) 在下面的代码片段(C#2.0)中:
public abstract class ObjectMapperBase< T > where T : new()
{
internal abstract bool UpdateObject( T plainObjectOrginal,
T plainObjectNew,
WebMethod fwm,
IDbTransaction transaction );
}
Run Code Online (Sandbox Code Playgroud)
继承人的例子:
public abstract class OracleObjectMapperBase< T > : ObjectMapperBase< T > where T : new()
{
internal override bool UpdateObject( T plainObjectOrginal,
T plainObjectNew,
WebMethod fwm,
IDbTransaction transaction )
{
// Fancy Reflection code.
}
}
Run Code Online (Sandbox Code Playgroud)
什么是where
关键词呢?
我已经安装了Visual Studio 2015作为试用版,从那以后我的单元测试使用fakes将不再编译,甚至在VS 2013上也没有编译.单元测试项目的目标是.net 4.5.
Msdn建议更改目标框架版本.如果我将目标框架更改为4.6但是我无法将项目更新为.net 4.6,因为每个开发人员必须立即更新,错误就消失了.
我得到的错误:
无法解析主要参考"mscorlib.4.0.0.0.Fakes",因为它是针对".NETFramework,Version = 4.6 fraemwork构建的.这是比当前目标框架".NETFramework,Version = 4.5"更高的版本.
我也试图删除假货并重新创建它们但是它们没有构建,我得到这样的错误:
名称空间'System.Diagnostics.Tracing'*中不存在类型或命名空间名称'EventDataAttribute';
对此有任何修复?
我的程序经常因死锁而停止。当我彻底解决并查看线程时,我发现三个线程卡在我们的日志记录函数中:
public class Logging
{
public static void WriteClientLog(LogLevel logLevel, string message)
{
#if DEBUG
System.Diagnostics.Debug.WriteLine(String.Format("{0} {1}", DateTime.Now.ToString("HH:mm:ss"), message)); //LOCK
#endif
//...Log4net logging
}
}
Run Code Online (Sandbox Code Playgroud)
如果我让程序继续,线程仍然卡在那条线上。
我看不出这可以锁定在哪里。调试类、字符串类和日期时间类似乎是线程安全的。
当我删除#if DEBUG System... #endif
代码时错误消失了,但我很好奇为什么会发生这种行为。
主题一:
public void CleanCache()
{
Logging.WriteClientLog(LogLevel.Debug, "Start clean cache.");//Stuck
}
Run Code Online (Sandbox Code Playgroud)
主题二:
private void AliveThread()
{
Logging.WriteClientLog(LogLevel.Debug, "Check connection");//Stuck
}
Run Code Online (Sandbox Code Playgroud) 我们有一个看起来像这样的集合:
{
"_id" : "10571:6",
"v" : 261355,
"ts" : 4.88387e+008
}
Run Code Online (Sandbox Code Playgroud)
现在,一些"v"是整数,一些是双打.我想将它们全部改为双打.
我尝试过一些东西,但没有任何作用(v是这个记录的int32,我想将它改为double):
db.getCollection('VehicleLastValues')
.find
(
{_id : "10572:6"}
)
.forEach
(
function (x)
{
temp = x.v * 1.0;
db.getCollection('VehicleLastValues').save(x);
}}
Run Code Online (Sandbox Code Playgroud)
我试过的事情:
x.v = x.v * 1.1 / 1.1;
x.v = parseFloat (new String(x.v));
Run Code Online (Sandbox Code Playgroud)
但我不能把它当作双重保存......
我注意到外国程序员的以下代码:
private Client[] clients = new Client[0];
public CreateClients(int count)
{
lock (clients)
{
clients = new Client[count];
for(int i=0; i<count; i++)
{
Client[i] = new Client();//Stripped
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不是完全正确的代码,但我想知道这究竟是做什么的.每次调用此方法时,这会锁定一个新对象吗?