gsp 1 рік тому
батько
коміт
650568fd9f

+ 66 - 0
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/ExtenderWrapperIpc.cs

@@ -0,0 +1,66 @@
+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 ExtenderWrapper extenderRemoteObj=null;
+      
+
+        public static  ExtenderWrapper 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 = (ExtenderWrapper)Activator.GetObject(typeof(ExtenderWrapper), "ipc://ExtenderServerChannel/ExtenderWrapper");
+
+                    extenderRemoteObj.ConnectToEDSHardware();
+                }
+                else 
+                {
+                    IpcClientChannel channel = new IpcClientChannel();
+                    //Register the channel with ChannelServices.
+                    ChannelServices.RegisterChannel(channel, false);
+                    extenderRemoteObj = (ExtenderWrapper)Activator.GetObject(typeof(ExtenderWrapper), "ipc://ExtenderServerChannel/ExtenderWrapper");
+
+                    extenderRemoteObj.ConnectToEDSHardware();
+
+                }
+               
+                
+            }
+            return extenderRemoteObj;
+
+        }
+
+        internal static void CloseExtenderWrapper()
+        {
+            Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
+           
+            if (processes.Length!=0)
+            {
+                processes[0].Kill();
+               
+            }
+        }
+    }
+}