Process.SynchronizingObject Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft das Objekt ab, das zum Marshallen der Ereignishandleraufrufe verwendet wird, die als Ergebnis eines Prozessbeendigungsereignisses ausgegeben werden, oder legt dieses fest.
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
Eigenschaftswert
Das ISynchronizeInvoke, das zum Marshallen von Ereignishandleraufrufen verwendet wird, die als Ergebnis eines Exited-Ereignisses des Prozesses ausgegeben werden.
- Attribute
Beispiele
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
Hinweise
Wenn SynchronizingObject ist null
, werden Methoden, die das Exited Ereignis behandeln, für einen Thread aus dem Systemthreadpool aufgerufen. Weitere Informationen zu Systemthreadpools finden Sie unter ThreadPool.
Wenn das Exited Ereignis von einer visuellen Windows Forms Komponente behandelt wird, z. B. , Buttonfunktioniert der Zugriff auf die Komponente über den Systemthreadpool möglicherweise nicht oder führt zu einer Ausnahme. Vermeiden Sie dies, indem Sie auf eine Windows Forms Komponente festlegenSynchronizingObject, wodurch die Methoden, die das Exited Ereignis behandeln, in demselben Thread aufgerufen werden, auf dem die Komponente erstellt wurde.
Wenn in Process Visual Studio 2005 in einem Windows Forms Designer verwendet wird, wird automatisch auf das Steuerelement festgelegt, SynchronizingObject das den Processenthält. Wenn Sie z. B. einen Process in einem Designer für Form1
platzieren (der von Formerbt), wird die SynchronizingObject -Eigenschaft von Process auf die instance von Form1
festgelegt:
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 der Regel wird diese Eigenschaft festgelegt, wenn die Komponente in einem Steuerelement oder Formular platziert wird, da diese Komponenten an einen bestimmten Thread gebunden sind.