【问题标题】:C#: Wait for user input inside a class library without freezing graphical user interfaceC#:在类库中等待用户输入而不冻结图形用户界面
【发布时间】:2021-12-25 22:28:37
【问题描述】:

我的目标是在类库 (.dll) 中拥有一个方法

首先我们实例化类,然后调用方法。

这个方法会:

  1. 绘制一个简单的 GUI(两个按钮)。
  2. 停止执行并等待用户点击按钮 1 或按钮 2。
  3. 继续执行并根据按下的按钮返回一个值。

执行步骤 3 后,实例化的类将被销毁。

这个类库是在不同的环境中实例化的,该方法只能被调用1次。

我的实际阻塞点是:

  1. 如果我在代码中使用一段时间,GUI 将冻结。
  2. 如果我使用线程,代码将继续执行,不会等待用户输入。

我的问题是:

你如何处理这种情况?是否有针对此类用例的指南或预定义架构?

谢谢。

【问题讨论】:

  • 这应该是 windows 窗体还是 wpf?对我来说,这听起来像是显示一个模式对话框,这也会“停止”调用者的执行。
  • 这必须是定制的 .net framework windows 窗体。
  • 系统必须在需要时重新绘制,不是吗?
  • 不需要重绘。仅溺水1次。
  • 在我的解释点 2 中,代码停止执行,直到用户单击按钮。这是模态对话框的典型案例。只需创建一个表单,向其添加按钮并使用Form.ShowDialog 显示该表单。在按钮的单击事件处理程序中关闭表单。

标签: c# user-interface dll freeze


【解决方案1】:

感谢Steeeve,问题现在解决了

使用 Form.ShowDialog();而不是 Form.Show();将“停止”执行,直到用户单击按钮。

" 这是模态对话框的典型案例。只需创建一个表单,向其中添加按钮并使用 显示该表单。在按钮的单击事件处理程序中关闭该表单。"通过斯蒂夫。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多