예제 #1
0
        public static async void TesteChannel()
        {
            Server server = new Server();

            var serverPort = new ServerPort("127.0.0.1", P_PORTA_RPC, ServerCredentials.Insecure);

            server.Ports.Add(serverPort);

            var searchService = SearchService.BindService(new MyService());

            server.Services.Add(searchService);
            server.Start();

            Channel channel = new Channel("localhost", P_PORTA_RPC, ChannelCredentials.Insecure);

            channel.ConnectAsync(DateTime.UtcNow.AddSeconds(4)).Wait();
            var client = new SearchServiceClient(channel);

            SearchRequest req = new SearchRequest();

            req.FileMask     = "*.bat";
            req.StartDir     = @"C:\";
            req.Recursive    = true;
            req.IgnoreErrors = true;
            var result = client.Search(req);

            Debug.WriteLine("[p1]");

            var t1 = client.Delay1Async(new DelayDesc()
            {
                MilliSeconds = 2000
            });

            Debug.WriteLine("[p2]");

            Debug.WriteLine("[p3]");

            var t2 = client.Delay2Async(new DelayDesc()
            {
                MilliSeconds = 1000
            });

            Debug.WriteLine("[p4]");

            Empty v1 = await t1;

            Debug.WriteLine("[p5]");

            Empty v2 = await t2;

            Debug.WriteLine("[p6]");

            ProcessStartInfoPB psi = new ProcessStartInfoPB();

            psi.FileName = "c:/temp/teste.bat";
            var p = client.RunCmd(psi);
        }
예제 #2
0
 public override Task <ProcessPB> RunCmd(ProcessStartInfoPB request, ServerCallContext context)
 {
     return(Task.Run <ProcessPB>(delegate()
     {
         ProcessStartInfo psi = new ProcessStartInfo();
         psi.FileName = request.FileName;
         psi.Arguments = (String.Join(" ", request.Arguments.ToArray())).Trim();
         ProcessPB ret = new ProcessPB();
         ret.Started = false;
         try
         {
             using (Process p = Process.Start(psi))
             {
                 ret.Pid = p.Id;
                 ret.Started = true;
             }
         }
         catch (FileNotFoundException) { }
         return ret;
     }));
 }