【发布时间】:2015-12-13 02:08:06
【问题描述】:
我想在数据网格视图中显示一些有关表单加载的数据,我想显示的数据是大量行,当我使用后台工作处理器时,它会显示以下错误。
我的代码:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
FTPUtility obj = new FTPUtility();
dataGridViewRequest.DataSource = obj.ListRequestFiles();
dataGridViewRequest.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewRequest.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewRequest.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewResponses.DataSource = obj.ListResponseFiles();
dataGridViewResponses.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewResponses.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewResponses.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
表单加载:
private void FormFTP_Load(object sender, EventArgs e)
{
try
{
//this.comboBoxRequests.SelectedIndex = 0;
backgroundWorker1.RunWorkerAsync();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
您正在做的事情(= 试图从
BackgroundWorker线程修改 GUI 元素)无法完成。您最好阅读有关 C#/.NET 中的BackgroundWorker/multithreading 的内容,因为您的想法还不清楚。 -
@varocarbas 我正在尝试从本地 Windows 应用程序 datagridview 上的 ftp 获取文件,当我加载数据时它需要太多时间,所以我想先加载主窗体,然后在几秒钟后文件显示在 datagridview 中。
-
正如我之前的评论中所解释的:您的代码正在做的事情证明您绝对缺乏关于
BackgroundWorker和基本思想(即多线程)的知识。提高你在这两个方面的知识,而不是盲目测试并抱怨你看到的每一个问题。 -
@varocarbas 我解决了问题,谢谢
标签: winforms c#-4.0 backgroundworker