Замена кода применяемого в WPF в Winows Forms C#

256
13 сентября 2018, 14:20

Переношу код с WPF на Windows Forms и столкнулся с такой проблемой. Есть класс - который получает контекст от основного окна в конструктор.

public MainWindow()
    {
        InitializeComponent();
        FFmpegConfig.UserInterfaceManager = new FFmpegUserInterfaceManager(this); // Вот сюда.
    }

Потом есть класс, который наследуется от абстрактного и реализует абстрактные методы:

 public class FFmpegUserInterfaceManager : UserInterfaceManagerBase
{
    private Window parent;
    public FFmpegUserInterfaceManager(Window parent)
    {
        this.parent = parent;
    }
    public override IUserInterface CreateUI(string title, bool autoClose)
    {
        return Application.Current.Dispatcher.Invoke(() => FFmpegWindow.Instance(parent, title, autoClose));
    }
    public override void DisplayError(FFmpegProcess host)
    {
        Application.Current.Dispatcher.Invoke(() => FFmpegErrorWindow.Instance(parent, host));
    }
}

Вот собственно вопрос, как мне на винформах получить инстанс, потому что строка

Application.Current.Dispatcher.Invoke(() => FFmpegErrorWindow.Instance(parent, host));

Не относится к контролам WinForms и абсолютно не рабочая, после Application не видно например референс на Current.

Answer 1

у вас же есть parent, он какого типа?

  • Если Window - то есть это всё ещё WPF и все должно работать.
  • Если Form, то если весь UI у вас в одном потоке, то можно сделать так:

    parent.Invoke(new Action(() =>{ /*......*/ }));
    

Это запустит операцию в диспетчере, связанным с формой.

READ ALSO
SOAP или RESTAPI для написания своего API на c#?

SOAP или RESTAPI для написания своего API на c#?

Существует задача: написать свой API для приложения на C#, вопрос очень простой как это лучше реализовать, какие технологии использовать? В процессе...

253
C# работа с базой

C# работа с базой

Ребят, рассчитываю на ваш опыт!

247
Что значит обратный апостроф в c#?

Что значит обратный апостроф в c#?

В одном из примеров встретил такой код:

294
Есть ли IDE для C# для совместной разработки?

Есть ли IDE для C# для совместной разработки?

Есть ли какие-нибудь компиляторы кода C# с поддержкой

258