我有一个简单的程序,当按下按钮时循环结果集并对该结果集执行操作(存储在a中DataTable
).在循环中,我更新了a RichTextBox
,2个标签和a 的文本ToolStripStatusLabel
.这些在循环期间没有刷新,所以在循环中处理每个项目之后我做了this.Refresh()
.这是有效的,除非我点击程序中的任何内容,此时它表示它没有响应,并且在foreach
循环完成之前,表单中没有任何内容刷新.
private void myBtn_Click(object sender, EventArgs e) { // Query database and store results in DataTable dt. foreach (DataRow dr in dt.Rows) { // Process row data. // Update RichTextBox, labels, and ToolStripStatusLabel. this.Refresh(); } }
这里有问题吗?有一个更好的方法吗?这是一个使用C#的Windows窗体应用程序.
它说"没有响应",因为你正在占用GUI线程.如果要执行冗长的操作,请考虑使用后台线程.
查看BackgroundWorker即可开始使用.
这是一个线程教程,以防万一.