Process.SynchronizingObject Właściwość

Definicja

Pobiera lub ustawia obiekt używany do organizowania wywołań obsługi zdarzeń, które są wydawane w wyniku zdarzenia zakończenia procesu.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); };
public System.ComponentModel.ISynchronizeInvoke? SynchronizingObject { get; set; }
public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get; set; }
[System.ComponentModel.Browsable(false)]
public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get; set; }
member this.SynchronizingObject : System.ComponentModel.ISynchronizeInvoke with get, set
[<System.ComponentModel.Browsable(false)>]
member this.SynchronizingObject : System.ComponentModel.ISynchronizeInvoke with get, set
Public Property SynchronizingObject As ISynchronizeInvoke

Wartość właściwości

ISynchronizeInvoke

ISynchronizeInvokeSłuży do organizowania wywołań obsługi zdarzeń, które są wydawane w wyniku Exited zdarzenia w procesie.The ISynchronizeInvoke used to marshal event handler calls that are issued as a result of an Exited event on the process.

Atrybuty

Przykłady

   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

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

Public Class MyButton
    Inherits Button

End Class

Uwagi

Gdy SynchronizingObject tak jest null , metody obsługujące Exited zdarzenie są wywoływane w wątku z puli wątków systemowych.When SynchronizingObject is null, methods that handle the Exited event are called on a thread from the system thread pool. Aby uzyskać więcej informacji na temat pul wątków systemowych, zobacz ThreadPool .For more information about system thread pools, see ThreadPool.

Gdy Exited zdarzenie jest obsługiwane przez składnik visual Windows Forms, na przykład Button , uzyskanie dostępu do składnika za pomocą puli wątków systemowych może nie zadziałać lub może spowodować wyjątek.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. W tym celu należy to zrobić SynchronizingObject , ustawiając składnik Windows Forms, co powoduje, że metody obsługujące Exited zdarzenie mają być wywoływane w tym samym wątku, w którym został utworzony składnik.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.

Jeśli Process jest używana w programie Visual Studio 2005 w projektancie Windows Forms, SynchronizingObject jest automatycznie ustawiana na kontrolkę zawierającą Process .If the Process is used inside Visual Studio 2005 in a Windows Forms designer, SynchronizingObject is automatically set to the control that contains the Process. Na przykład, jeśli umieścisz Process w projektancie dla Form1 (który dziedziczy z Form ) SynchronizingObject Właściwość Process jest ustawiona na wystąpienie 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

Zazwyczaj ta właściwość jest ustawiana, gdy składnik jest umieszczony wewnątrz kontrolki lub formularza, ponieważ te składniki są powiązane z określonym wątkiem.Typically, this property is set when the component is placed inside a control or form, because those components are bound to a specific thread.

Dotyczy

Zobacz też