跨线程问题
本文关键字:问题 线程 | 更新日期: 2023-09-27 18:00:18
我有一个按钮,代码为
new Thread(() =>
{
DataTable table = Finish(txtTest.Text);
//dgwTest.DataSource = table
}).Start();
我想设置datagridview数据源,但我得到了一个"跨线程"异常。有人知道我该如何避免这种情况吗?
string source=txtTest.Text;
new Thread(() =>
{
DataTable table = Finish(source);
dgwTest.Invoke ((Action) (() => dgwTest.DataSource = table));
}).Start();
您需要在DataGridView
上使用Invoke方法
private delegate void SetDGVValueDelegate(DataTable table);
private void button1_Click(object sender, EventArgs e)
{
new Thread(() => {
DataTable table = Finish(txtTest.Text);
SetDGVValue(table);
}).Start();
}
private void SetDGVValue(DataTable table)
{
if (dataGridView1.InvokeRequired)
{
dataGridView1.Invoke(new SetDGVValueDelegate(SetDGVValue), table);
}
else
{
dataGridView1.DataSource = table;
}
}