Пример #1
0
        private static void Main(string[] args)
        {
            var clientProcess = new ClientProcess();

            if (clientProcess.Deserialize())
            {
                Console.WriteLine("I'm called");

                // receive arguments from caller process
                var deserializer = clientProcess.Deserializer;

                var person1  = deserializer.GetArgument <Person>("person1");
                var person2  = deserializer.GetArgument <Person>(1);
                var myDog    = deserializer.GetArgument <Dog>("myDog");
                var myString = deserializer.GetArgument <string>(3);
                var myCode   = deserializer.GetArgument <int>(4);

                Console.WriteLine(person1);
                Console.WriteLine(person2);
                Console.WriteLine(myDog);
                Console.WriteLine(myString);
                Console.WriteLine(myCode);

                // communicate with caller process
                clientProcess.Transmitter.PrepareAsync().Wait();
                var message = clientProcess.Transmitter.Receive <string>();
                Console.WriteLine(message);
            }
            else
            {
                Console.WriteLine("I'm calling");

                ProcessExecutor executor = new ProcessExecutor("Example.exe");// execute itself

                // pass arguments while calling
                executor.Add("person1", new Person()
                {
                    Name = "tran xuan son", Age = 23
                });
                executor.Add(new Person()
                {
                    Name = "tran xuan soan", Age = 24
                });
                executor.Add("myDog", new Dog()
                {
                    CoatColor = "black", Type = "i don't know"
                });
                executor.Add("some string");
                executor.Add(3393);
                executor.Execute();

                // communicate with process that is called
                executor.Transmitter.PrepareAsync().Wait();
                executor.Transmitter.Send("ok, i am fine");
            }
            Console.Read();
        }