本帖最后由 surfshark 于 2011-05-07 16:36:18 编辑

解决方案 »

  1.   

    建议你用内存映像COPYDATASTRUCT 中就是保持的指针,数组也一样
      

  2.   

    进程间通信,可以用TCPClient或UDPClient类,建立两个进程的通信,调用send和receive两个方法就行
     public  struct   sendpack
            {
               public  int command;
               public  int params1;
            }
           public  struct recepack
            {
                public int rnet;
                public int valuetype;
                [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
                public char[] tagname;
                public double value;
                public long timestamp;
            }
     UdpClient udpClient = new UdpClient();
            IPEndPoint Ipendport = new IPEndPoint(0,0);
           
            public bool tcp = true;
            public string tcpExcepation = "";
            public int sendandrecieve()//发送命令:1,初始化;2,关闭;3,获取信息;4,读值
            {
                try
                {
                        
                        StringBuilder sb = new StringBuilder();
                        sb.Append(sendpack1.command.ToString());
                        sb.Append(sendpack1.params1.ToString());
                        int size = Marshal.SizeOf(sendpack1);
                        System.IntPtr ptr = Marshal.AllocHGlobal(size);
                        byte[] by = new byte[size];
                        try
                        {
                            Marshal.StructureToPtr(sendpack1, ptr, true);
                            Marshal.Copy(ptr, by, 0, by.Length);
                            udpClient.Send (by,by.Length ,Ipendport);
    。。