Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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#更新UI?_C#_Winforms - Fatal编程技术网

在运行时用C#更新UI?

在运行时用C#更新UI?,c#,winforms,C#,Winforms,我已经创建了一个C#Winforms应用程序 在这个应用程序中,我在ShowDialog模式下打开了一个表单,当我单击OK按钮时,它开始将联系人从GridView导入数据库的过程(行数可能高达15000) 问题是,当导入过程开始时,我会在循环中增加progressBar的值,但如果表单失去焦点,并且我再次将焦点设置到该表单,则进度条不会更新 即使表单失去焦点,我如何更新进度条?时不时地使用,但您确实应该使用来防止这种情况发生。WinForms或WPF应用程序?不管怎么说,答案是——从一个单独的线

我已经创建了一个C#Winforms应用程序

在这个应用程序中,我在ShowDialog模式下打开了一个表单,当我单击OK按钮时,它开始将联系人从GridView导入数据库的过程(行数可能高达15000)

问题是,当导入过程开始时,我会在循环中增加progressBar的值,但如果表单失去焦点,并且我再次将焦点设置到该表单,则进度条不会更新


即使表单失去焦点,我如何更新进度条?

时不时地使用,但您确实应该使用来防止这种情况发生。

WinForms或WPF应用程序?不管怎么说,答案是——从一个单独的线程开始,有很多相同的问题——尝试使用BackgroundWorker进行搜索。看看[这里][1]。[1] :我想你是因为
Application.DoEvents
@username:Is
Application.DoEvents()
不好而被否决的吧?它会导致其他“无响应”的应用程序不时响应。@AlexEssilfie在这种情况下,有更好的方法更新UI。看一看@username:谢谢你的启发。在我编写代码的早期,我几乎在任何地方都会使用
Application.DoEvents()
。谢天谢地,我做那件事从来没有遇到任何问题。我现在不自觉地使用了线程,但从未想过使用
Application.DoEvents()
会有任何影响。