c# – DateTime issue – 可在对象外部使用但不在内部的值

这是一个非常令人沮丧和奇怪的问题,我将不胜感激任何有关如何解决它的建议.

我有一个私有变量的对象:

private DateTime _maturityDate = DateTime.MaxValue;

它有一个相应的属性:

public DateTime MaturityDate { get; set; }

我有一个方法来更新名为UpdateInstrumentBase()的数据库中的数据.该属性是从Windows窗体上的DateTimePicker控件设置的.它是通过代码设置的,而不是通过数据绑定:

((Instrument)instrumentBS.DataSource).MaturityDate = dateTimePicker9.Value;

这正确设置了值:

(我无法发布图片,所以你必须相信我的确如此)

然而 – 这是一个真正奇怪的问题 – 当你进入INSIDE对象时,这就是属性的设置.即使尝试在即时窗口中输出或使用console.writeline,也会导致以下结果:

? _maturityDate {System.DateTime}
Date: Cannot evaluate expression because a thread is stopped at a point
where garbage collection is
impossible, possibly because the code
is optimized.

我已经尝试将日期值作为字符串传递,然后转换为DateTime作为变通方法,但是对此ANF内的任何对任何DateTime属性或变量的访问 – 不仅仅是这个 – 都会导致此错误.我搜索过高和低,但我甚至不确定此错误消息是否相关或有用.

我在Visual Studio 2008版本9.0.21022.8中使用.NET Framework 3.5 SP1,如果这是相关的.

我很难过.对象非常复杂,所以我对发布整个内容犹豫不决,但如果有人有任何想法,我会发布相关代码.

提前大家和亲切的感谢!

最佳答案 这不是代码中的错误.这里发生的是C#调试器正在尝试计算表达式,并从CLR返回CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT或CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE的返回值.这些是错误代码,表明无法在当前上下文中评估表达式,并且与实际用户代码几乎没有关系.

Mike Stall对这些消息有很好的细分,以及为什么它们可能值得一读.

> http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx

不幸的是,虽然你可以做很少的事情来解决这个问题.除非问题是您正在调试优化,否则关闭优化将解决问题.

点赞