这是一个非常令人沮丧和奇怪的问题,我将不胜感激任何有关如何解决它的建议。
我有一个私有变量的对象:
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} 日期:无法计算表达式,因为线程在某个点停止 垃圾收集的地方 不可能,可能是因为代码 优化。
我已经尝试将日期值作为字符串传递,然后转换为DateTime作为变通方法,但对此对象内的任何 ANY DateTime属性或变量 - 不仅仅是这一个 - 的访问都会导致这个错误。我搜索过高和低,但我甚至不确定这个错误信息是否相关或有用。
如果相关,我在Visual Studio 2008版本9.0.21022.8中使用.NET Framework 3.5 SP1。
我很难过。对象非常复杂,所以我对发布整个内容犹豫不决,但如果有人有任何想法,我会发布相关代码。
提前付出巨大而亲切的谢意!
答案 0 :(得分:2)
这不是代码中的错误。这里发生的是C#调试器正在尝试计算表达式,并从CLR返回CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT
或CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE
的返回值。这些是错误代码,表明无法在当前上下文中评估表达式,并且与实际用户代码几乎没有关系。
Mike Stall对这些消息有很好的细分,以及为什么它们可能值得阅读。
不幸的是,尽管你可以做很少的事情来解决这个问题。除非问题是您正在调试优化,否则关闭优化将解决问题。
答案 1 :(得分:0)
观察:
根据您在上面发布的内容,
public DateTime MaturityDate {get;组; }
是一个autoproperty(http://msdn.microsoft.com/en-us/library/bb384054.aspx),应该与_maturityDate没有任何关系。
我错过了什么吗?