Переношу код с 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.
у вас же есть parent, он какого типа?
Если Form, то если весь UI у вас в одном потоке, то можно сделать так:
parent.Invoke(new Action(() =>{ /*......*/ }));
Это запустит операцию в диспетчере, связанным с формой.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости