Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在何处添加eventhandler_C#_Events - Fatal编程技术网

C# 在何处添加eventhandler

C# 在何处添加eventhandler,c#,events,C#,Events,我刚刚通过了一项众所周知的测试,我很想知道这个问题的答案: “场景:您正在编写一个具有“开始任务”按钮和“任务信息”按钮的表单。“任务信息”按钮将被禁用,但每当单击“开始任务”按钮时,“任务信息”将被启用,并向其添加一个事件处理程序,向打印机发送状态报告。任务完成后,“任务信息”按钮将被禁用再次禁用“启动任务”按钮,直到再次单击“启动任务”。完成一项任务可能需要很多分钟,有时需要在任务开始和结束时打印状态报告 这对于第一个任务来说非常有效,但是您会发现,对于后续任务,额外的状态报告会发送到打印机

我刚刚通过了一项众所周知的测试,我很想知道这个问题的答案:

“场景:您正在编写一个具有“开始任务”按钮和“任务信息”按钮的表单。“任务信息”按钮将被禁用,但每当单击“开始任务”按钮时,“任务信息”将被启用,并向其添加一个事件处理程序,向打印机发送状态报告。任务完成后,“任务信息”按钮将被禁用再次禁用“启动任务”按钮,直到再次单击“启动任务”。完成一项任务可能需要很多分钟,有时需要在任务开始和结束时打印状态报告

这对于第一个任务来说非常有效,但是您会发现,对于后续任务,额外的状态报告会发送到打印机,从而浪费纸张和精力对它们进行排序。 基于上述场景,您如何解决该问题

选择:

  • 禁用“任务信息”按钮单击处理程序中的“任务信息”按钮
  • 禁用“任务信息”按钮中的“启动任务”按钮单击处理程序,然后在任务完成后重新启用
  • 为“开始任务”按钮和“任务信息”按钮实现IDisposable界面
  • 在“任务信息”按钮点击处理程序中增加一个计数器,并且只有当计数器的值为零时才执行其余代码
  • 在窗体的构造函数中为“任务信息”按钮添加事件处理程序,而不是“启动任务”按钮的处理程序

  • 我个人更喜欢答案5。但是了解社区的观点很有趣。

    是的,正确的解决方案是第5条