Process.SynchronizingObject Process.SynchronizingObject Process.SynchronizingObject Process.SynchronizingObject Property

Definizione

Ottiene o imposta l'oggetto usato per effettuare il marshalling delle chiamate del gestore eventi generate in seguito a un evento di terminazione di un processo.Gets or sets the object used to marshal the event handler calls that are issued as a result of a process exit event.

public:
 property System::ComponentModel::ISynchronizeInvoke ^ SynchronizingObject { System::ComponentModel::ISynchronizeInvoke ^ get(); void set(System::ComponentModel::ISynchronizeInvoke ^ value); };
[System.ComponentModel.Browsable(false)]
public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get; set; }
member this.SynchronizingObject : System.ComponentModel.ISynchronizeInvoke with get, set
Public Property SynchronizingObject As ISynchronizeInvoke

Valore della proprietà

Oggetto ISynchronizeInvoke usato per effettuare il marshalling delle chiamate del gestore dell'evento generate in seguito a un evento Exited del processo.The ISynchronizeInvoke used to marshal event handler calls that are issued as a result of an Exited event on the process.

Esempi

   ref class MyButton: public Button
   {
   public:
      void MyProcessExited( Object^ source, EventArgs^ e )
      {
         MessageBox::Show( "The process has exited." );
      }
   };

public:
   MyButton^ button1;
private:
   void MyProcessExited( Object^ source, EventArgs^ e )
   {
       MessageBox::Show( "The process has exited." );
   }
   void button1_Click( Object^ sender, EventArgs^ e )
   {
      Process^ myProcess = gcnew Process;
      ProcessStartInfo^ myProcessStartInfo = gcnew ProcessStartInfo( "mspaint" );
      myProcess->StartInfo = myProcessStartInfo;
      myProcess->Start();
      myProcess->Exited += gcnew System::EventHandler( this, &Form1::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 MyButton button1;
    private void button1_Click(object sender, System.EventArgs e)
    {
        using (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();
        }
    }
    private void MyProcessExited(Object source, EventArgs e)
    {
        MessageBox.Show("The process has exited.");
    }
}

public class MyButton : Button
{

}
    Private button1 As MyButton
    Private Sub button1_Click(sender As Object, e As EventArgs)
        Using myProcess As New Process()
            Dim myProcessStartInfo As New ProcessStartInfo("mspaint")
            myProcess.StartInfo = myProcessStartInfo
            myProcess.Start()
            AddHandler myProcess.Exited, AddressOf 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()
        End Using
    End Sub 'button1_Click

    Private Sub MyProcessExited(source As Object, e As EventArgs)
        MessageBox.Show("The process has exited.")
    End Sub 'MyProcessExited
End Class 'Form1

Public Class MyButton
    Inherits Button

End Class 'MyButton

Commenti

Quando SynchronizingObject viene null, i metodi che gestiscono il Exited eventi vengono chiamati su un thread dal pool di thread di sistema.When SynchronizingObject is null, methods that handle the Exited event are called on a thread from the system thread pool. Per altre informazioni sui pool di thread di sistema, vedere ThreadPool.For more information about system thread pools, see ThreadPool.

Quando la Exited evento è gestito da un componente visivo di Windows Form, ad esempio un Button, accedere al componente tramite il pool di thread di sistema potrebbero non funzionare o potrebbe generare un'eccezione.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. Evitare questo problema impostando SynchronizingObject a un componente di Windows Form, in modo che i metodi che gestiscono il Exited eventi da chiamare sullo stesso thread in cui è stato creato il componente.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.

Se il Process viene usata all'interno Visual Studio 2005Visual Studio 2005 in una finestra di progettazione Windows Form SynchronizingObject viene impostato automaticamente al controllo che contiene il Process.If the Process is used inside Visual Studio 2005Visual Studio 2005 in a Windows Forms designer, SynchronizingObject is automatically set to the control that contains the Process. Ad esempio, se si inserisce un Process in una finestra di progettazione per Form1 (che eredita dalla classe Form) il SynchronizingObject proprietà di Process è impostato per l'istanza di Form1: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:

this->process1->StartInfo->Domain = "";
this->process1->StartInfo->LoadUserProfile = false;
this->process1->StartInfo->Password = nullptr;
this->process1->StartInfo->StandardErrorEncoding = nullptr;
this->process1->StartInfo->StandardOutputEncoding = nullptr;
this->process1->StartInfo->UserName = "";
this->process1->SynchronizingObject = this;
process1.StartInfo.Domain = "";
process1.StartInfo.LoadUserProfile = false;
process1.StartInfo.Password = null;
process1.StartInfo.StandardErrorEncoding = null;
process1.StartInfo.StandardOutputEncoding = null;
process1.StartInfo.UserName = "";
process1.SynchronizingObject = this;
process1.StartInfo.Domain = ""
process1.StartInfo.LoadUserProfile = False
process1.StartInfo.Password = Nothing
process1.StartInfo.StandardErrorEncoding = Nothing
process1.StartInfo.StandardOutputEncoding = Nothing
process1.StartInfo.UserName = ""
process1.SynchronizingObject = Me

In genere, questa proprietà viene impostata quando il componente si trova all'interno di un controllo o form, in quanto tali componenti vengono associati a un thread specifico.Typically, this property is set when the component is placed inside a control or form, because those components are bound to a specific thread.

Sicurezza

LinkDemand
per un'attendibilità totale per il chiamante immediato.for full trust for the immediate caller. Impossibile utilizzare questo membro in codice parzialmente attendibile.This member cannot be used by partially trusted code.

Si applica a

Vedi anche