sistemas programacion procesos ppt operativos lenguaje inter historia entre distribuidos comunicacion caracteristicas c# communication interprocess

programacion - lenguaje c# pdf



¿Cuál es el método más simple de comunicación entre procesos entre 2 procesos de C#? (5)

Deseo comunicarme entre un proceso de padre e hijo ambos escritos en C #. Debe ser asincrónico, impulsado por eventos. No quiero ejecutar un hilo en cada proceso que maneje la muy rara comunicación.

¿Cuál es la mejor solución para eso?



Si sus procesos en la misma computadora, simplemente puede usar stdio .

Este es mi uso, un screenshot de página web:

var jobProcess = new Process(); jobProcess.StartInfo.FileName = Assembly.GetExecutingAssembly().Location; jobProcess.StartInfo.Arguments = "job"; jobProcess.StartInfo.CreateNoWindow = false; jobProcess.StartInfo.UseShellExecute = false; jobProcess.StartInfo.RedirectStandardInput = true; jobProcess.StartInfo.RedirectStandardOutput = true; jobProcess.StartInfo.RedirectStandardError = true; // Just Console.WriteLine it. jobProcess.ErrorDataReceived += jp_ErrorDataReceived; jobProcess.Start(); jobProcess.BeginErrorReadLine(); try { jobProcess.StandardInput.WriteLine(url); var buf = new byte[int.Parse(jobProcess.StandardOutput.ReadLine())]; jobProcess.StandardOutput.BaseStream.Read(buf, 0, buf.Length); return Deserz<Bitmap>(buf); } finally { if (jobProcess.HasExited == false) jobProcess.Kill(); }

Detectar args en Main

static void Main(string[] args) { if (args.Length == 1 && args[0]=="job") { //because stdout has been used by send back, our logs should put to stderr Log.SetLogOutput(Console.Error); try { var url = Console.ReadLine(); var bmp = new WebPageShooterCr().Shoot(url); var buf = Serz(bmp); Console.WriteLine(buf.Length); System.Threading.Thread.Sleep(100); using (var o = Console.OpenStandardOutput()) o.Write(buf, 0, buf.Length); } catch (Exception ex) { Log.E("Err:" + ex.Message); } } //... }



También hay COM .

Hay tecnicismos, pero diría que la ventaja es que podrá llamar a los métodos que puede definir.

MSDN ofrece tutoriales de interoperabilidad C # COM. Por favor busca porque estos enlaces cambian.

Para comenzar de inmediato, ve here ...