Tag: C#的

Dispatcher.BeginInvoke:不能将lambda转换为System.Delegate

我试图调用System.Windows.Threading.Dispatcher.BeginInvoke 。 该方法的签名是这样的: BeginInvoke(Delegate method, params object[] args) 我试图将它传递给一个Lambda,而不必创build一个Delegate。 _dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } ); 它给我一个编译器错误,说我不能将lambda转换为System.Delegate。 委托的签名将一个对象作为参数并返回void。 我的lambda匹配这个,但它不工作。 我错过了什么?

将System.Double与“0”(数字,int?)进行比较的正确方法

对不起,这可能是一个简单的愚蠢的问题,但我需要知道的确定。 我有这个表情, void Foo() { System.Double something = GetSomething(); if (something == 0) //Comparison of floating point numbers with equality // operator. Possible loss of precision while rounding value {} } 这个expression与之相等吗? void Foo() { System.Double something = GetSomething(); if (something < 1) {} } ? 因为那么我可能会遇到问题,例如input值为0.9的if 。

我如何通过JObject枚举?

我试图确定如何访问我的JObject中的数据,而我无法决定如何使用它。 JObject Object = (JObject)Response.Data["my_key"]; 我可以将它打印到Console.WriteLine(Object)的控制台上,然后看到数据,如下所示: { "my_data" : "more of my string data" … } 但我不知道如何迭代/枚举,任何人有任何想法? 我现在处于这样的状态。

URI无效:无法确定URI的格式

我不断收到这个错误。 URI无效:无法确定URI的格式。 我有的代码是: Uri uri = new Uri(slct.Text); if (DeleteFileOnServer(uri)) { nn.BalloonTipText = slct.Text + " has been deleted."; nn.ShowBalloonTip(30); } 编辑:slct.Text中的内容是ftp.jt-software.net/style.css 。 是什么赋予了? 这不是一个有效的URI格式? 这是纯文本。

如何在我的Linux C ++程序中启用核心转储

我的程序是用C ++编写的。 用gcc编译,用-g3 -O0 -ggdb标志。 当它崩溃时,我想打开它的核心转储。 它创build核心转储文件,还是我需要做一些事情来启用核心转储创build,在程序本身,或在计算机上执行它? 这个文件的创build地点是什么?

如何将对象转换为其实际types?

如果我有: void MyMethod(Object obj) { … } 我怎么能obj到什么样的实际types?

未定义的行为是否未被评估?

我对以下代码与一些同事存在分歧: int foo ( int a, int b ) { return b > 0 ? a / b : a; } 这段代码是否performance出未定义的行为? 编辑:分歧从什么似乎是过度急切的优化编译器,其中b > 0检查被优化出来的错误。

如果我在我的C ++项目中使用C风格强制转换,是否值得重构C ++强制转换?

我在我的15K LOC C ++项目中使用C风格的演员,90%的时间在儿童和基础class之间进行演员训练。 即使当我读到使用它们是不好的,而且它们可能导致严重的错误,因为它们不像C ++types那样安全,我仍然感觉使用它们是非常好的和舒适的。 到目前为止,我的项目中还没有遇到一个错误,例如,由于意外错误input了C-Style演员而导致的错误。 有两个主要的原因我没有使用它们: 我还不够了解他们 我不喜欢他们的语法,他们更冗长,更难以阅读 我的问题: (为什么)我应该重构我的项目使用C ++风格的演员? 我为什么要为未来的项目使用C ++风格的演员? 我使用C ++为我提供的所有其他优点,包括虚拟和抽象基类,名称空间,STL等OOP,而不是新types的转换语法。 “ 为什么你不只是用C呢? ”这个说法不适合我。

TransactionScope过早完成

我有一个在TransactionScope中运行的代码块,在这个代码块中,我对数据库进行了几次调用。 select,更新,创build和删除整个色域。 当我执行我的删除我执行它使用SqlCommand的扩展方法,将自动重新提交查询,如果它死锁,因为这个查询可能会遇到死锁。 我相信当遇到死锁,并且该函数试图重新提交查询时,会发生此问题。 这是我收到的错误: 与当前连接相关的交易已经完成但尚未处理。 事务必须在连接可以用来执行SQL语句之前进行处理。 这是执行查询的简单代码(下面的所有代码都是在使用TransactionScope的情况下执行的): using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.App)) { sqlCommand.Connection.Open(); sqlCommand.ExecuteNonQueryWithDeadlockHandling(); } 以下是重新提交死锁查询的扩展方法: public static class SqlCommandExtender { private const int DEADLOCK_ERROR = 1205; private const int MAXIMUM_DEADLOCK_RETRIES = 5; private const int SLEEP_INCREMENT = 100; public static void ExecuteNonQueryWithDeadlockHandling(this SqlCommand sqlCommand) { int count = 0; SqlException deadlockException = […]

如何使用CancellationToken属性?

与前面的RulyCanceler类相比 ,我想用CancellationTokenSource来运行代码。 如何在取消令牌中使用它,即不抛出/捕获exception? 我可以使用IsCancellationRequested属性吗? 我试图像这样使用它: cancelToken.ThrowIfCancellationRequested(); 和 try { new Thread(() => Work(cancelSource.Token)).Start(); } catch (OperationCanceledException) { Console.WriteLine("Canceled!"); } 但是这给了cancelToken.ThrowIfCancellationRequested();的运行时错误cancelToken.ThrowIfCancellationRequested(); 在方法Work(CancellationToken cancelToken) : System.OperationCanceledException was unhandled Message=The operation was canceled. Source=mscorlib StackTrace: at System.Threading.CancellationToken.ThrowIfCancellationRequested() at _7CancellationTokens.Token.Work(CancellationToken cancelToken) in C:\xxx\Token.cs:line 33 at _7CancellationTokens.Token.<>c__DisplayClass1.<Main>b__0() in C:\xxx\Token.cs:line 22 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, […]