gpt4 book ai didi

c# - 传递参数给线程问题

转载 作者:行者123 更新时间:2023-11-30 17:20:44 26 4
gpt4 key购买 nike

在数据 GridView 中,我有一个 IP 地址字段。当我单击检查状态按钮时,我为 datagridview 中的每一行创建线程,然后调用该 IP 上主机上的远程对象并获取一些信息并将另一个 datagridview 字段设置为该信息。

但是有一个问题。信息在 datagridview 上设置错误。为什么?

    private void button_CheckStatus_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView.Rows.Count; i++)
{
IPAddress IP;
if (IsValidIP(dataGridView["IP", i].Value.ToString(), out IP))
{
Thread t = new Thread(() => CheckStatusThreadFunction(IP, i));
t.Start();
}
}

}

最佳答案

确保不捕获循环变量:

    for (int i = 0; i < dataGridView_VSD.Rows.Count; i++) 
{
int ii = i;
IPAddress IP;
if (IsValidIP(dataGridView_VSD["VSD_IP", i].Value.ToString(), out IP))
{
Thread t = new Thread(() => CheckVSDStatusThreadFunction(IP, ii));
t.Start();
}
}

这是一个很常见的错误。

参见例如here

关于c# - 传递参数给线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4033541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com