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