Clever-1945
12/1/2017 - 5:06 AM

Заполнение Control элемента из другого потока #CSharp

Заполнение Control элемента из другого потока #CSharp

//Бывают такие моменты, когда необходимо редактировать элементы формы окна ( кнопку, картинку,  поле ввода)
//Такие действия разрешены только из того потока, в котором был создан элементы
//Для Редактирвание Control элементов из другого потока необходимо выполнить код от имени того потока
//В котором был создан Control


this.wFrame.Dispatcher.Invoke(new Action<object, AForge.Video.NewFrameEventArgs>((x, y) => 
{
    BitmapImage bitmapImage = Assistant.getBitmapImage(y.Frame.Clone() as System.Drawing.Image);
    this.wFrame.Stretch = Stretch.Fill;
    this.wFrame.Source = bitmapImage;
}), sender, eventArgs);
//В этом примере, в фигурных скобках, располагается код, 
//который выполняется в том потоке, в котором был создан this.wFrame
//В этот код передаются 2 переменнные с типами: object и AForge.Video.NewFrameEventArgs, 
//а сами переменные это: sender и eventArgs, 
//но в том коде, что они выполняются, переменные sender и eventArgs фигурируют как x и y








//Подобное можно сделать по другому 
this.wFrame.Dispatcher.Invoke(new Action<object , AForge.Video.NewFrameEventArgs>(onFrame), sender , eventArgs);
//Только вместо фрагмента кода тут вызывается функция onFrame в которую так же передаются прмененные sender и eventArgs
//С типам object и AForge.Video.NewFrameEventArgs