我有一个使用OPCDA.Net组件的应用程序。我使用opcserver,注册128个组,128个数据更改处理程序(128个同步线程)。应用程序不会返回错误,它在前10分钟正常工作,但随后停止。 我将在每250毫秒调用此方法 当我暂停应用程序以检查它将停止的位置时,它将不允许设置中断。
private void DataChangeHandler(object sender, DataChangeEventArgs e)
{
// The invoke handling is only required when the callback handler writes data into Windows dialogs
try
{
if (InvokeRequired)
{
BeginInvoke(new DataChangeEventHandler(DataChangeHandler), new object[] { sender, e });
return;
}
if (parameter.X == 0)
{
parameter.X = 1;
Thread th = new Thread(param.update);
th.Start(e);
}
}
catch { }
}
像这样我将创建128 datachange处理程序方法。 有时,当我执行此代码时,它将停止工作。 您是否知道可以从BeginInvoke中调用这些属性的应用程序的任何情况? 当我将运行2个datachnagehandler它将工作正常,当我将尝试10数据更改处理程序它将挂起,当我将使用调试器测试它将删除工作指针,没有异常捕获。