.net 在dotnet windows窗体中,如何在窗体中暂停而不放置窗体';什么时候睡觉?

.net 在dotnet windows窗体中,如何在窗体中暂停而不放置窗体';什么时候睡觉?,.net,winforms,multithreading,sleep,.net,Winforms,Multithreading,Sleep,问题是我不想使用Threading.Sleep(1000),因为我需要线程保持活动状态,只需在执行下一行代码之前暂停,同时不允许用户在暂停期间单击表单上的任何内容。我能想到的最简单的方法是打开一个不透明度为0的定时自动关闭对话框。有更好的方法获得相同的结果吗?您可以设置并使用计时器稍后将其设置为true。将Enabled设置为false,然后过一段时间将其设置回true。您可以在单独的线程上执行此操作。也可以考虑将光标更改为等待光标。 有以下几种方式: 禁用整个表单,进行处理,然后再次启用它。

问题是我不想使用Threading.Sleep(1000),因为我需要线程保持活动状态,只需在执行下一行代码之前暂停,同时不允许用户在暂停期间单击表单上的任何内容。我能想到的最简单的方法是打开一个不透明度为0的定时自动关闭对话框。有更好的方法获得相同的结果吗?

您可以设置并使用计时器稍后将其设置为
true

将Enabled设置为false,然后过一段时间将其设置回true。您可以在单独的线程上执行此操作。也可以考虑将光标更改为等待光标。

有以下几种方式:

  • 禁用整个表单,进行处理,然后再次启用它。(使用
    Form.Enabled
    property。)

  • 显示一个模式对话框,没有关闭或移动(完全锁定)的选项,并显示类似“加载”或“处理”的消息,完成任务并关闭它


我看到您有一个多线程标记。您是否试图使窗体等待线程在后台完成运行?如果是这样,我建议您看看BackgroundWorker类。您可以将处理程序添加到ProgressChanged和OnRunWorkerCompleted事件中,当进度更改为started时,您可以将enabled设置为false,然后在完成时再次设置为true。不过,这需要一点时间。也许最好还是接受阿尔宾的答案。