Прочитать на английском

Поделиться через


Process.SynchronizingObject Свойство

Определение

Получает или задает объект, используемый для маршалинга вызовов обработчика событий, происходящих в результате события завершения процесса.

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; }

Значение свойства

Объект ISynchronizeInvoke, используемый для маршалинга вызовов обработчика событий, возникающих в результате события Exited в процессе.

Атрибуты

Примеры

    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
{
}

Комментарии

Если SynchronizingObject имеет значение null, методы, обрабатывающие Exited событие, вызываются в потоке из пула системных потоков. Дополнительные сведения о пулах системных потоков см. в разделе ThreadPool.

Exited Если событие обрабатывается компонентом визуального Windows Forms, например Button, доступ к компоненту через пул системных потоков может не работать или может привести к исключению. Избежать этого, задав SynchronizingObject для Windows Forms компонент, который вызывает методы, обрабатывающие Exited событие, в том же потоке, в котором был создан компонент.

Process Если используется в Visual Studio 2005 в конструкторе Windows Forms, SynchronizingObject автоматически устанавливается элемент управления , содержащий Process. Например, если поместить Process в конструктор для Form1 (который наследует от Form), свойству SynchronizingObjectProcess присваивается экземпляр Form1:

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;

Как правило, это свойство задается, когда компонент помещается в элемент управления или форму, так как эти компоненты привязаны к определенному потоку.

Применяется к

Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

См. также раздел