111,125
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e)
{
....省略几行些连接服务器和创建组的
for (int i = 1; i <= pointCount; i++)
{
ClientHandles[i] = i;
}
for (int i = 1; i <= pointCount; i++)
{
Retstr[i] = _pointID2[i - 1].ToString();
}
TheOPCitems.AddItems(pointCount, ref arrRetstr, ref arrClientHandles, out arrServerHandles, out arrErrors, null, null);
for (int i = 1; i <= pointCount; i++)
{
oitem[i] = TheOPCitems.GetOPCItem(Convert.ToInt32(arrServerHandles.GetValue(i)));
oitem[i].IsActive = true;
}
}
void DataChange(xxx,fff,ddd,zzz...)
{
if (First== 1)
{
return;
}
..
...
...
}
TheOPCgroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(XXX_DataChange);
delegate void HandleInterfaceUpdateDelegate(); //委托,此为重点
HandleInterfaceUpdateDelegate interfaceUpdateHandle;
Thread td;
public formMain()
{
InitializeComponent();
interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(StartPro); //实例化委托对象
}
在你进行操作的方法里第一句加上:
this.Invoke(interfaceUpdateHandle);//用指定的参数列表执行指定的委托
最后一行加上:
td.Abort();
这是相关的方法。
private void chang()
{
ProcessBar obj = new ProcessBar();注:ProcessBar是你放置图片的窗口
obj.ShowDialog();
}
public void StartPro()
{
td= new Thread(chang);
td.Start();
}