Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=76129 --- shadow/76129 2005-09-16 18:07:48.000000000 -0400 +++ shadow/76129.tmp.28362 2005-09-16 18:07:48.000000000 -0400 @@ -0,0 +1,101 @@ +Bug#: 76129 +Product: Mono: Class Libraries +Version: unspecified +OS: GNU/Linux [Other] +OS Details: Gentoo 64bit +Status: NEW +Resolution: +Severity: +Priority: Minor +Component: System +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: Process.Exited event doesn't behave like MS.NET + +On MS.NET is perfectly normal to launch a process or find a process that +has been launched in the past and just EnableRaising events and then grab +the Exited event. However on Mono the following exception is thrown: + +Unhandled Exception: System.InvalidOperationException: The process is +already started. +in <0x0004c> System.Diagnostics.Process:set_EnableRaisingEvents (Boolean +value)in (wrapper remoting-invoke-with-check) +System.Diagnostics.Process:set_EnableRaisingEvents (bool) + +Here is the code I used on Mono on Linux, if you run it under windows and +change the process to lets say notepad, it works just fine: + + +======================================= + +using System; + +namespace ProcessTest +{ + /// <summary> + /// Summary description for Class1. + /// </summary> + class Class1 + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main(string[] args) + { + System.Diagnostics.Process p = new System.Diagnostics.Process(); + System.Diagnostics.ProcessStartInfo info = new +System.Diagnostics.ProcessStartInfo("monodevelop"); + p.StartInfo = info; + p.Start(); + p.EnableRaisingEvents = true; + p.Exited +=new EventHandler(p_Exited); + Console.WriteLine("Press Enter key to exit."); + Console.In.ReadLine(); + } + + private static void p_Exited(object sender, EventArgs e) + { + Console.WriteLine("exited"); + } + } +} + + +========================================== + +here is another piece of code I used on windows as well: + +using System; + +namespace ProcessTest +{ + /// <summary> + /// Summary description for Class1. + /// </summary> + class Class1 + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main(string[] args) + { + System.Diagnostics.Process[] p = +System.Diagnostics.Process.GetProcessesByName("notepad"); + p[0].EnableRaisingEvents = true; + p[0].Exited +=new EventHandler(p_Exited); + Console.WriteLine("Press Enter key to exit."); + Console.In.ReadLine(); + } + + private static void p_Exited(object sender, EventArgs e) + { + Console.WriteLine("exited"); + } + } +} _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
