返回

c#-为什么 UI 交互没有内置的“安全”方法?

发布时间:2022-03-03 02:31:11 556
# c++# flask

我是一个狂热的开发人员,而不是一个专业的开发人员,因此,我对为什么有些问题是如此缺乏技术性的理解。最近,我一直在开发应用程序,试图通过使用Backgroundworker来处理各种数据库调用来提高响应能力。

后台工作人员完成后,我需要更新UI,因此我通常会执行以下操作:

    private delegate void safeSetTextDelegate(Control control, string text);
    public static void SafeSetText(this Control control, string text)
    {
        if(control.InvokeRequired)
        {
            safeSetTextDelegate _delegate = new safeSetTextDelegate(SafeSetText);
            control.Invoke(_delegate, new object[] { control, text});
        }
        else
        {
            control.Text = text;
        }
    }

现在,显然这是可行的。但是,随着我发现我需要的扩展方法的数量开始增长(我有用于设置样式、动态添加子控件、向DataGridView添加行等的扩展方法),我想知道为什么没有一组标准方法可用。Net WinForms语言/模型,甚至解释了为什么调用所需的检查没有在后台自动进行,并根据需要应用委托(我猜这是一个性能问题——为什么在大多数情况下根本不需要检查调用线程)。我试图对此进行研究,但没有找到任何合理的答案。

如果我将其总结为一系列问题:

  1. 在我的方法中有什么固有的坏/错误吗(后台工作人员通过检查InvokeRequired)
  2. 是我的想法,为什么在不同的方法。Net WinForms不会自动执行此操作InvokeRequired检查是否正确(调用invokererequired需要多少开销)?
  3. 类似地,是否有原因可以解释为什么通用UI更新的线程安全方法在应用程序中不存在。Net WinForms规范?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
下一篇
Javascript CORS获取响应。状态=0 2022-03-03 01:45:13