【问题标题】:Asynchronous control validation异步控制验证
【发布时间】:2009-12-18 16:22:07
【问题描述】:

我需要在失去焦点时验证控制输入。通常我会使用 Validating 事件。但是,此过程涉及根据超过 280,000 个邮政编码的本地数据库检查输入的数据。我希望此验证异步进行,因为用户无需等待即可输入剩余的表单数据。

我的第一个想法是将验证逻辑封装在它自己的方法中,绑定一个委托并在控件验证事件中使用 BeginInvoke() 和 EndInvoke,因为没有可能的验证结果需要 Cancel=True (他们将简单更改控件前景色)。

有没有更好的方法?

【问题讨论】:

    标签: c# winforms multithreading


    【解决方案1】:

    您可能想查看BackgroundWorker

    【讨论】:

    • 完美!这正是我所需要的。 ProgressChanged 和 RunWorkerCompleted 事件提供的控制级别超过了我的委托。谢谢你:)
    【解决方案2】:

    您可能会发现BackgroundWorker 是一种很好的方法。

    要考虑的一件事是用户在验证运行完成之前尝试提交表单。

    【讨论】:

    • +1 感谢 Pondidum。 TJMonk 领先你几秒钟。但这意味着我也应该感谢你。
    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2017-04-08
    • 2017-11-20
    • 2014-03-15
    相关资源
    最近更新 更多