【问题标题】:my.settings.myVariable sometimes don't stick ie. intermittantmy.settings.myVariable 有时不坚持。间歇性的
【发布时间】:2017-08-31 22:21:33
【问题描述】:

Windows 10 64 位,VB.NET 2017

我有一个文本框,我想保留它的价值。我输入20,通常下次我启动程序时它仍然存在。但有时它是空白的。什么都没有 代码改变它。我正在调试另一部分代码。有时我会单步执行并编辑代码。有时我会使用 shift-F5 来结束程序。通常 20 会持续存在。

在项目>道具>设置中,它是一个用户变量,字符串,命名为:TextBox_OD_log10_gain(与它设置的文本框同名)

这里是启动时加载文本框的地方......

Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    application.DoEvents
    TextBox_OD_log10_gain.text = my.settings.TextBox_OD_log10_gain
End Sub

这里只是设置文本框的地方......

Private Sub MainForm_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
                my.settings.TextBox_OD_log10_gain = TextBox_OD_log10_gain.text 
        My.Settings.Save()
End Sub

下面的“Alessandro Mandelli”表明问题是 .NET Framework 的故障。这是真的??我应该放弃 my.settings 吗?并使用不同的方法?

【问题讨论】:

标签: c# .net vb.net winforms visual-studio


【解决方案1】:

当您按下 Shift+F5 来终止调试会话时,您可能会立即在当前执行的位置结束程序并且它永远没有机会触发或处理FormClosed 事件,这反过来意味着您的设置永远不会被保存。您可能应该在完成调试后关闭表单本身,以便它有机会执行您指定的任何其他保存或清理,而不是从代码外部突然结束它。

【讨论】:

  • 这不会导致它出现空白,最后保存的设置仍然存在,如果是 20 并且他不更改它,它应该保持 20。但这很容易检查,断点或其他东西。
  • 和你一样的环境,同样的问题。间歇性无法加载或保存设置。它似乎是某种错误,无论是在 .net 框架上还是在它与 w10/64 的交互上。我怀疑 Reference Assemblies 文件夹中的一个文件中的 xml 损坏
  • CKH:我确认这不是问题。
【解决方案2】:

我要放弃 my.Settings。太不靠谱了。没有像样的例子或文档。我的一些设置保持不变,而另一些则没有。

我的答案是回到我从未遇到过的“GetSetting”。 此外,GetSetting 大约需要一半的时间来编写代码。

【讨论】:

    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多