| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | using OxfordExtenderWrapper;using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Ipc;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;namespace OTSMeasureApp.ServiceCenter.OxfordExtender{   static class ExtenderWrapperIpc    {        static ExtenderIpcUI extenderRemoteObj =null;              public static ExtenderIpcUI GetExtenderWrapper()        {            if (extenderRemoteObj == null)            {                Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");                System.Diagnostics.Process p;                if (processes.Length == 0)                {                    p = System.Diagnostics.Process.Start(Application.StartupPath + "\\OxfordExtender\\OxfordExtenderWrapper.exe", "hide");                    Thread.Sleep(800);                    IpcClientChannel channel = new IpcClientChannel();                    //Register the channel with ChannelServices.                    ChannelServices.RegisterChannel(channel, false);                    extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI");                    //extenderRemoteObj.ConnectToEDSHardware();                    return extenderRemoteObj;                }                else                 {                    IpcClientChannel channel = new IpcClientChannel();                    //Register the channel with ChannelServices.                    ChannelServices.RegisterChannel(channel, false);                    extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI");                    //extenderRemoteObj.ConnectToEDSHardware();                    return extenderRemoteObj;                }                                           }            extenderRemoteObj.ConnectToEDSHardware();//reconnect ,prevent the connection be closed by other reason accidentally.            return extenderRemoteObj;        }        internal static void KillExtenderWrapperProcess()        {            Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");            //if (processes.Length!=0)            //{            //    processes[0].Kill();            //}            extenderRemoteObj.CloseExtender();        }    }}
 |