【发布时间】:2014-04-01 11:52:55
【问题描述】:
我正在尝试创建一个方法,当传递带有可 ping 主机名的数据表引用时,尝试 ping 每个主机,然后根据 ping 成功更改相应列和行的值。
但是我不能在 Parallel.ForEach 方法中使用引用。有什么办法可以使这项工作?
这是我的代码:
public void checkON(ref DataTable PCS)
{
Parallel.ForEach(PCS.AsEnumerable(), pc =>
{
string loopIp = pc["Name"].ToString();
if (PingIP(loopIp))
{
DataRow[] currentpc = PCS.Select("Name = '{0}'", loopIp);
currentpc[0]["Online"] = "ON";
}
else
{
DataRow[] currentpc = PCS.Select("Name = '{0}'", loopIp);
currentpc[0]["Online"] = "OFF";
}
}
);}
【问题讨论】:
-
那么你为什么需要
ref?从您的代码中我看不到原因。此外,DataTable是线程安全的吗? (它应该,IMO 但是......我们确定吗?) -
@Adriano 我很确定它不是 ;p
标签: c# datatable ref parallel.foreach