在做opcua通讯,复制的之前成功调试的项目到新项目中,出现了连接委托未将对象引用设置到对象的实例。打断点比较两边发现GetConnectStatus都是true,但是新项目显示 delConnectStatus=null;而原项目的会显示方法。这是怎么回事,我都没改动过代码。
public partial class communication : Form
{
#region 基础参数
//OPCUA帮助类
private OPCUAHelper oPCUAHelper = new OPCUAHelper();
//定义委托
public GlobalPara.DelConnectStatus delConnectStatus;
//服务器信息
private string serverInfo;
#endregion
public communication()
{
InitializeComponent();
}
#region 按钮方法
//匿名登陆按钮
private void Btn_AnonymouseLogin_Click(object sender, EventArgs e)
{
//服务器地址
string serverAddress = textBox_ServerAddress.Text;
serverInfo = serverAddress;
//匿名登陆
oPCUAHelper.OpenConnectOfAnonymous(serverAddress);
//执行连接状态委托
delConnectStatus(GetConnectStatus);
//信息提示
InfoTips();
}
引用 皆我百晓生 小程序回复内容作答:
根据您提供的代码,有几个地方可能导致连接委托未设置到对象的实例。
首先,请确保在新项目中的communication类的构造函数内初始化delConnectStatus委托,例如:
public communication()
{
InitializeComponent();
delConnectStatus = delegate { return true; }; // 初始化委托
}
另外,请确保您在原项目中的代码中没有其他地方对delConnectStatus进行了赋值或修改。如果有,请将其删除或注释掉。
如果上述两个方法都没有解决问题,可能是其他地方出现了问题。可以尝试手动创建一个新的委托实例,并将其赋给delConnectStatus:
delConnectStatus = new GlobalPara.DelConnectStatus(GetConnectStatus);
请确保GetConnectStatus是一个具有相同签名的方法。
希望以上信息对您有帮助!如果还有其他问题,请随时提问。
【以下回答由 GPT 生成】
根据您提供的代码,我们可以看出新项目中的delConnectStatus
对象没有被正确初始化,因此在使用该对象时会出现错误。请确保在新项目中添加了适当的代码来设置delConnectStatus
对象的实例。
您可以通过以下方式来设置delConnectStatus
对象的实例:
delConnectStatus = new GlobalPara.DelConnectStatus(YourMethod);
在上述代码中,将YourMethod
替换为您自己定义的连接状态检查方法。
如果您遇到任何问题,请随时向我提问。