我有一个奇怪的问题要在这里解释。我有一个带有多个屏幕的向导。在我的第一个屏幕中,我正在读取一个 XML 文件,它已被读取,并且它的值显示/用于屏幕。在其中一个屏幕中,我正在更改这些值,然后点击Update
按钮更新数据。但是在向导结束时,当我单击完成时,更改的值没有正确保存。我也用代码确认了这一点,在导出数据时更改的值不存在。
但是当我开始调试时,真正的刺激来了。到目前为止,我只在导出数据时进行调试。但后来我从向导开始调试。我在调试时注意到,当我Update
在更改值后点击按钮时,这一次值被更新并导出了正确的数据。但是当我在运行时运行应用程序或直接在导出过程中放置一个调试点时,不会反映更改的数据。
所以问题是,当我调试更改的值时正在导出,而在运行时却没有。任何人都可以在这方面给我一些建议吗?
但是我后来注意到,有时在运行时它会更新,有时不会。但是当我调试时它总是会更新。如果重要的话,我正在使用 Winforms 和 MVP。
编辑
我还必须承认,当我将按钮事件方法放在Thread.Sleep(2000)
末尾时Update
,一切看起来都很好并且工作正常。但是,我的代码审阅者并不喜欢这种方法,而且这种方法也不会让我满意。
再次编辑
该Update
按钮使用主线程并更新同一线程中的值。但是,当我单击完成时,它会从那里创建BackgroundWorker
并运行一个ExportData
方法。以我目前的观察和知识,我看不到更多的线索。