我有一个执行各种任务的应用程序,每个任务最多可能需要一分钟。我想确保我以一致的方式将应用程序设置为“工作状态”,因此我设置了一个类(我们称之为“LockI”),当初始化时记录各种事物的当前状态(光标,状态栏,屏幕更新等)。然后,当调用restrict方法时,它会将所有内容设置为工作状态。在类析构函数中,所有原始设置都将被恢复,因此我不必担心错误(或者有人忘记调用恢复方法)而是将应用程序全部锁定。另外,因为它将应用程序恢复到它所在的状态,如果对该类进行了第二次调用,我不必担心当堆栈中较深的类被销毁时它会意外解锁应用程序。
所以现在我的问题,假设我上面描述的内容不是一个错误,应该将应用程序锁定在各种过程中,还是将应用程序锁定在事件处理程序中(如按钮单击处理程序)然后打电话给程序? (或其他一些选择。)
澄清:更简洁......考虑到以下因素:
最好是在单击处理程序中实例化类,然后根据需要将其传递给被调用的过程,或者在被调用的过程中实例化该类,如果需要调用多个过程,则设置一个“漏斗” ?
答案 0 :(得分:1)
您可以使用varios用户交互模式,具体取决于用户的应用程序域,工作方式和首选项。根据我的经验,有些人喜欢在屏幕上的任何地方自由输入数据,而没有任何验证或检查机制锁定它们,只有当他们最终点击“Enter”或“Save”时才会出现这些。在该模型中,用刚输入的信息表示潜在问题的状态消息是有帮助的(例如“结束日期不能在开始日期之后”。),但它们必须仅是信息性的而且从不是模态的。这种方法允许与机器进行非常流畅的交互和长时间的“对话时间”。
或者,您可以使用与您描述的方法类似的“act& lock”方法,系统会在用户执行的每个操作后阻止所有进一步的交互。如果要执行明确的操作序列(不像填写表单,可以在任何地方开始),如果它们需要相对较长的时间(比在文本框中键入几个字符更长!),这很有用。如果一个动作和下一个动作之间的依赖关系是至关重要的(即如果前一个动作未被验证则不能执行一个动作)。在这种情况下,建议使用“act& lock”模式。它是健壮的,如果实施得当,可能会降低错误率。在现代的GUI中,多线程支持很容易提供,你可以锁定执行操作的窗口;或者,您可以锁定整个应用程序。它并不优雅,但通常更容易开发。在任何情况下,都需要提供信息,并且建议使用某种进度条。
编辑。关于imlpementation问题,我会在演示文稿(GUI)层创建一个ModalInteractor
类,并在我想开始一个新的模态交互时实例化该类的对象用户。该类具有以下可接受性区域:(a)锁定和解锁相关用户界面元素,(b)信令进度和(c)取消管理。您可以轻松找出每个区域所需的属性方法。从语义上讲,ModalInteractor
是管理或驱动GUI的逻辑的一部分(有些人会说“控制器”)。每当用户单击启动冗长进程的按钮时,创建一个新的ModalInteractor
对象并将引用传递给构造函数中的当前窗口。使用几个委托配置对象,以便它知道调用什么方法来开始漫长的过程,窗口中有哪些方法可以调用进度通知,以及当用户单击Cancel
时要响应的事件。
希望这有帮助。
答案 1 :(得分:0)
我认为,如果你提出了一个带有进度条,状态信息和取消按钮的模态对话框,那么你的生活会更容易(并且用户的生活也会更加令人沮丧)。