Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Process.SynchronizingObject Property

Gets or sets the object used to marshal the event handler calls that are issued as a result of a process exit event.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

public ISynchronizeInvoke SynchronizingObject { get; set; }
/** @property */
public ISynchronizeInvoke get_SynchronizingObject ()

/** @property */
public void set_SynchronizingObject (ISynchronizeInvoke value)

public function get SynchronizingObject () : ISynchronizeInvoke

public function set SynchronizingObject (value : ISynchronizeInvoke)

Property Value

The ISynchronizeInvoke used to marshal event handler calls that are issued as a result of an Exited event on the process.

When SynchronizingObject is a null reference (Nothing in Visual Basic), methods handling the Exited event are called on a thread from the system thread pool. For more information on system thread pools, see ThreadPool.

When the Exited event is handled by a visual Windows Forms component, such as a Button, accessing the component through the system thread pool might not work, or might result in an exception. Avoid this by setting SynchronizingObject to a Windows Forms component, which causes the methods handling the Exited event to be called on the same thread on which the component was created.

If the Process is used inside Visual Studio 2005 in a Windows Forms designer, SynchronizingObject is automatically set to the control containing the Process. For example, if you place a Process on a designer for Form1 (which inherits from Form) the SynchronizingObject property of Process is set to the instance of Form1.

Typically, this property is set when the component is placed inside a control or form, because those components are bound to a specific thread.

   private MyButton button1;
   private void button1_Click(object sender, System.EventArgs e)
   {
      Process myProcess = new Process();
      ProcessStartInfo myProcessStartInfo= new ProcessStartInfo("mspaint");
      myProcess.StartInfo = myProcessStartInfo;
      myProcess.Start();
      myProcess.Exited += new EventHandler(MyProcessExited);
      // Set 'EnableRaisingEvents' to true, to raise 'Exited' event when process is terminated.
      myProcess.EnableRaisingEvents = true;
      // Set method handling the exited event to be called  ;
      // on the same thread on which MyButton was created.
      myProcess.SynchronizingObject = button1;
      MessageBox.Show("Waiting for the process 'mspaint' to exit....");
      myProcess.WaitForExit();
      myProcess.Close();
   }
   private void MyProcessExited(Object source, EventArgs e)
   {
      MessageBox.Show("The process has exited.");
   }
}

public class MyButton:Button
{

}

    private MyButton button1;

    private void button1_Click(Object sender, System.EventArgs e)
    {
        System.Diagnostics.Process myProcess = 
            new System.Diagnostics.Process();
        ProcessStartInfo myProcessStartInfo = 
            new ProcessStartInfo("mspaint");
        myProcess.set_StartInfo(myProcessStartInfo);
        myProcess.Start();
        myProcess.add_Exited(new EventHandler(MyProcessExited));
        // Set 'EnableRaisingEvents' to true, to raise 'Exited' event when
        // process is terminated.
        myProcess.set_EnableRaisingEvents(true);

        // Set method handling the exited event to be called;
        // on the same thread on which MyButton was created.
        myProcess.set_SynchronizingObject(button1);
        MessageBox.Show("Waiting for the process 'mspaint' to exit....");
        myProcess.WaitForExit();
        myProcess.Close();
    } //button1_Click
    private void MyProcessExited(Object source, EventArgs e)
    {
        MessageBox.Show("The process has exited.");
    } //MyProcessExited
} //Form1

public class MyButton extends Button
{

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.