C# 通过WCF服务首次连接后,与OPC服务器的连接中断

C# 通过WCF服务首次连接后,与OPC服务器的连接中断,c#,wpf,wcf,subscription,opc,C#,Wpf,Wcf,Subscription,Opc,我有一个作为OPC客户端的WCF服务,它与OPC DA服务器接口,还有一个与WCF交互并启动它的WCF客户端(使用其方法) 问题在于: 当我第一次使用WCF方法connectToOPC()时,连接可能会在几秒钟后断开,也可能不会断开数据更改停止。 但是,当我重新启动connectToOPC时,连接仍处于活动状态,不会断开。发生了什么,为什么 WCF服务: public void connectToOPC(string OPCUrl, int GroupUpdateTime) { try

我有一个作为OPC客户端的WCF服务,它与OPC DA服务器接口,还有一个与WCF交互并启动它的WCF客户端(使用其方法) 问题在于: 当我第一次使用WCF方法
connectToOPC()
时,连接可能会在几秒钟后断开,也可能不会断开<代码>数据更改停止。 但是,当我重新启动
connectToOPC
时,连接仍处于活动状态,不会断开。发生了什么,为什么

WCF服务:

public void connectToOPC(string OPCUrl, int GroupUpdateTime)
{
    try
    {
        Main(OPCUrl, GroupUpdateTime);
    }
    catch (Exception ex) { Log(ex.Message, ""); }
}

public bool Run(string OPCUrl, int GroupUpdateTime)
    {
        try
        {
            url = new Opc.URL(OPCUrl);
            server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

            groupState = new Opc.Da.SubscriptionState();
            groupState.Name = "MyGroup";
            groupState.UpdateRate = GroupUpdateTime;
            groupState.Active = true;

            groupRead = (Opc.Da.Subscription)server.CreateSubscription(groupState);
            groupRead.DataChanged += new Opc.Da.DataChangedEventHandler(group_DataChanged);

            items = new Opc.Da.Item[ListOfTags.Count];

            for (int i = 0; i < ListOfTags.Count; i++)
            {
                items[i] = new Opc.Da.Item();
                items[i].ItemName = ListOfTags[i];
            }
            items = groupRead.AddItems(items);
        }
        catch (Exception ex)
        {
            Log(ex.Message, "");
            return false;
        }
        return true;
    }
        void group_DataChanged(object subscriptionHandle, object requestHandle,Opc.Da.ItemValueResult[] values)
    {
        //its stops here at first time  
    }
public partial class MainWindow : Window
{
    OPCClient client;

    public MainWindow()
    {
        InitializeComponent();

        client = new OPCClient("BasicHttpBinding_IOPC");
    }

    private void buttonOpcRun_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            GroupUpdateTime = Convert.ToInt32(textBoxUpdateGroupTime.Text);
            client.connectToOPC(OPCUrl, GroupUpdateTime);
        }
        catch (Exception ex)
        {
            System.Windows.MessageBox.Show(ex + "");
        }
    }
}