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

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

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

我有一个带有私有(private)变量的对象:

private DateTime _maturityDate = DateTime.MaxValue;

它有一个对应的属性:

public DateTime MaturityDate { get; set; }

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

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

这正确地设置了值:

(我不能发布图片所以你必须相信我它确实可以)

但是 - 这是一个真正奇怪的问题 - 当您进入对象内部时,这就是属性设置的内容。即使尝试在即时窗口中输出它或使用 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 作为解决方法,但是对该对象内部的 ANY DateTime 属性或变量的任何访问 - 不仅仅是这个 - 都会导致这个错误。我到处搜索,但我什至不确定此错误消息是否相关或有用。

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

我被难住了。该对象非常复杂,所以我不太愿意发布整个内容,但如果有人有任何想法,我会发布相关代码。

提前致以诚挚的谢意!

最佳答案

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

迈克·斯托尔 (Mike Stall) 对这些消息进行了很好的分解,以及它们为什么会出现,这可能值得一读。

不幸的是,您几乎无能为力解决此问题。除非问题是您正在优化调试,否则关闭优化将解决问题。

关于c# - DateTime 问题 - 值在对象外部可用但在对象内部不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960757/

相关文章:

c# - 如何创建具有热插拔能力的松散耦合架构?

c# - 无需调试的立即窗口

c++ - 有没有办法自动使库成为静态或动态的?

c# - 在 C# 中为 Windows XP 制作 Vista 风格的应用程序

C# System.Buffer.BlockCopy 内存问题?

c# - Caliburn Micro是否从版本1.1更改为1.5.1?

c# - 如何使用 x :Object and when?

c# - Ajax 调用还是UpdatePanel?

c# - 我可以强制筛选按钮显示在我的 DataGridView 列标题上吗?

c# - 将 Windows 窗体文本框输入值与数据库 C# SQL 中的值进行比较