C#在执行其他操作时刷新窗口
下面的场景。我有一个datagridview和一个progressbar,datagridview中填充了一些来自active directory的数据。填充我的datagridview大约需要3分钟。现在,当我的程序运行时,一切都很好,直到我切换窗口——比如打开web浏览器或其他任何东西。当我切换回我的程序时,整个窗口被“冻结”,在填充完成之前,progressbar不会显示任何进度。如何刷新我的datagridview和progressbar,使类似的事情不再发生?我试过每隔5秒运行一次datagdidview.Invalidate()和Refresh()(通过计时器,是的,它是启用的),但不起作用。我错过了什么C#在执行其他操作时刷新窗口,c#,datagridview,refresh,progress-bar,C#,Datagridview,Refresh,Progress Bar,下面的场景。我有一个datagridview和一个progressbar,datagridview中填充了一些来自active directory的数据。填充我的datagridview大约需要3分钟。现在,当我的程序运行时,一切都很好,直到我切换窗口——比如打开web浏览器或其他任何东西。当我切换回我的程序时,整个窗口被“冻结”,在填充完成之前,progressbar不会显示任何进度。如何刷新我的datagridview和progressbar,使类似的事情不再发生?我试过每隔5秒运行一次da
谢谢 您需要在不同的线程上运行UI和工作方法,否则当datagridview工作时,UI会锁定。您需要在不同的线程上运行UI和工作方法,否则当datagridview工作时,UI会锁定。您应该在单独的线程中获取数据(例如,使用
BackgroundWorker
或新线程),在需要与UI交互时编组回UI线程(使用控件上的BackgroundWorker.ReportProgress
。调用/BeginInvoke
)。有关更多信息和示例代码,请参阅。您应该在单独的线程中获取数据(例如,使用BackgroundWorker
或新线程),在需要与UI交互时编组回UI线程(使用控件上的BackgroundWorker.ReportProgress
。调用/BeginInvoke
)。有关更多信息和示例代码,请参阅