dyn*_*ser 3 c# multithreading datagridview winforms
我试图使用多线程从计时器数据绑定我的数据网格视图.我们需要它来显示实时数据.
我使用的代码是 -
private void Form1_Load(object sender, EventArgs e)
{
dt = JobManager.GetTodaysJobs();
trd = new Thread(StartTimer);
trd.Start();
}
void StartTimer()
{
timer1.Start();
LoadData();
}
void LoadData()
{
dt = JobManager.GetTodaysJobs();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
}
private void timer1_Tick(object sender, EventArgs e)
{
LoadData();
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误 -
跨线程操作无效:控制'dataGridView1'从其创建的线程以外的线程访问.
我有什么想法可以解决这个问题吗?
干杯
您无法从不是这些对象的创建者的线程更新UI元素.
像这样改变你的方法:
void LoadData()
{
if (InvokeRequired)
Invoke(new MethodInvoker(InnerLoadData));
}
void InnerLoadData()
{
dt = JobManager.GetTodaysJobs();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |