Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# 循环运行时如何按下按钮?_C# - Fatal编程技术网

C# 循环运行时如何按下按钮?

C# 循环运行时如何按下按钮?,c#,C#,我在一个机器视觉项目中工作。在我的项目中,我使用相机进行打印检查。 在我的应用程序中,我使用一个picturebox在屏幕上显示图像和两个按钮。在两个按钮中,一个按钮用于实时显示,另一个按钮用于全屏显示。使用livedisplay按钮,我在while循环中在picturebox中显示图像。同时,在while循环中,我必须按下全屏按钮。但是我不能按全屏按钮,因为当循环运行时,它不允许我按表单的任何按钮。(循环一段时间)为什么会发生这种情况?如何在循环运行时单击此按钮?可以选择一种解决方案,而不是运

我在一个机器视觉项目中工作。在我的项目中,我使用相机进行打印检查。
在我的应用程序中,我使用一个picturebox在屏幕上显示图像和两个按钮。在两个按钮中,一个按钮用于实时显示,另一个按钮用于全屏显示。使用livedisplay按钮,我在while循环中在picturebox中显示图像。同时,在while循环中,我必须按下全屏按钮。但是我不能按全屏按钮,因为当循环运行时,它不允许我按表单的任何按钮。(循环一段时间)为什么会发生这种情况?如何在循环运行时单击此按钮?

可以选择一种解决方案,而不是运行while循环;使用具有一定间隔的计时器,并在计时器上勾选“更新图片框中的图像”。当用户单击Liveupdate按钮时,您可以启动计时器。您可以将时间间隔保持在非常低的水平(例如100毫秒),这样您的更新就会给人一种实时的感觉。当应用程序可以为其他用户操作(如其他按钮单击)输入信息时,这将在两次更新之间留出一定的间隔。

欢迎来到多线程的奇妙世界。您需要将while循环放在一个单独的线程上,以便您的UI保持响应性。线程是一个漫长而深刻的概念,有无数种方法可以做到这一点


可能阻力最小的路径是使用BackgroundWorker线程模型。有关更多详细信息,请参阅。

我编辑了该链接。我最初给出了错误的链接(对于Silverlight),已修复,但显然不够好。无论如何,现在应该可以工作了。相信我,尽管一开始看起来有点复杂,BackgroundWorker模型是一种非常简单的多线程应用程序的方法。这是对更高级的多线程概念的一个很好的介绍。