c#-为什么 UI 交互没有内置的“安全”方法?
发布时间:2022-03-03 02:31:11 570
相关标签: # 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语言/模型,甚至解释了为什么调用所需的检查没有在后台自动进行,并根据需要应用委托(我猜这是一个性能问题——为什么在大多数情况下根本不需要检查调用线程)。我试图对此进行研究,但没有找到任何合理的答案。
如果我将其总结为一系列问题:
- 在我的方法中有什么固有的坏/错误吗(后台工作人员通过检查
InvokeRequired
) - 是我的想法,为什么在不同的方法。Net WinForms不会自动执行此操作
InvokeRequired
检查是否正确(调用invokererequired需要多少开销)? - 类似地,是否有原因可以解释为什么通用UI更新的线程安全方法在应用程序中不存在。Net WinForms规范?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报