DateTime问题 - 对象外部可用但不在内部的值

时间:2010-10-18 15:39:15

标签: c# visual-studio winforms debugging .net-3.5

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

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

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。

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

提前付出巨大而亲切的谢意!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

观察:

根据您在上面发布的内容,

public DateTime MaturityDate {get;组; }

是一个autoproperty(http://msdn.microsoft.com/en-us/library/bb384054.aspx),应该与_maturityDate没有任何关系。

我错过了什么吗?