当前位置:  开发笔记 > 运维 > 正文

如何在后台线程运行时阻止Winforms UI

如何解决《如何在后台线程运行时阻止WinformsUI》经验,为你挑选了2个好方法。

我继承了一个Winforms应用程序,该应用程序从UI线程向应用程序服务器执行大量长时间运行的调用,因此UI在相当长的一段时间内保持无响应,无法使用,无法使用.(这让我真的去了AAAAAAAAARGH!)

我计划将服务器调用移动到后台线程并禁用UI - 但可移动和可关闭 - 而后台线程完成其工作.

那么什么是禁止用户输入我的应用程序的最佳方法?我正在考虑"模态进度对话框",但我更喜欢一种不会强迫我将视觉投射到用户面前的解决方案(某些服务器操作在不到500毫秒内运行,因此对话框不是最佳的...)

在Winforms中是否有任何方法可以阻止用户启动操作或更改应用程序中的数据,同时通过一些选择(调整大小,显示,隐藏和家庭以及关闭窗口的用户)?我更喜欢一种不会让我访问表单中的每个UI元素并将其设置为禁用的方式...它们中有很多并且该应用程序确实"在UI设计器中被黑客攻击,直到它显示出华而不实的东西"源代码的风格.在发布日期之前,没有办法重构每个有臭味的东西......

哦,顺便说一下,这个应用程序存在于.net框架2中



1> Andy..:

我知道的唯一方法是将部分/全部控件设置为禁用.但是,根据控件的布局方式,不必将每个控件设置为禁用 - 当禁用容器控件时,也会禁用其所有子控件.例如,如果你有GroupBox一些控件,如果你设置GroupBox为禁用,那么它中的所有控件GroupBox也将被禁用.



2> driis..:

选择一些上层容器控件(可能是表单本身),并将其Enabled属性设置为false.放置在该控件上的所有控件都将被禁用,这将阻止它们接收输入.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有