问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
这是读取变量编号和值,写道类里保存
public static List<MyOPCItem> OPCList = new List<MyOPCItem>();//把读出的变量编号和值放到这个类里
public static void AsyncReadHandler(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps, ref Array Errors)
{
foreach (object item in ClientHandles)
{
string tagid ;
tagid = Convert.ToInt32(item).ToString();
OPCList.Add(new MyOPCItem() { Tagid = tagid });
//MessageBox.Show(tagid); //用弹出窗口测试过,变量编号和值都顺序读出来了
}
foreach (object item1 in ItemValues)
{
string tagvalue ;
tagvalue = item1.ToString();
OPCList.Add(new MyOPCItem() { Value = tagvalue });
//MessageBox.Show(tagvalue);
}
}
//这是读取变量和编号显示到控件里
for (int i = 1; i < hs;)
{
//读取变量编号
this.listView1.Items.Add(Convert.ToString(OPCList[i-1].Tagid));
this.listView1.Items[i - 1].SubItems.Add(mytag[Convert.ToInt32(OPCList[i - 1].Tagid)]);
this.listView1.Items[i - 1].SubItems.Add(myname[Convert.ToInt32(OPCList[i - 1].Tagid)]);
//读取值
this.listView1.Items[i - 1].SubItems.Add(OPCList[Convert.ToInt32(OPCList[i - 1].Tagid)].Value);
this.listView1.Items[i - 1].SubItems.Add(DateTime.Now.ToLocalTime().ToString());
i++;
}
运行结果及报错内容
运行起来变量编号可以正常读出,但是值只能读出第一个,且对应的类的位置随机
我的解答思路和尝试过的方法
我尝试遍历所有值,把不为空的写进去,但是程序就卡死了
我想要达到的结果
我希望能顺序读出值并于值编号对应,并显示在控件上