Я работал только с WinForms и решил пойти на WPF, но столкнулся с проблемой, которую не могу решить:
Я хочу авторизоваться на vk.com через vkApi и сделатьчто, я должен передать делегату, возвращающему строку с кодом для 2factor auth
p.TwoFactorAuthorization = () =>
{
var two = new TwoFactor();
two.ShowDialog();
return two.Data;
};
Я решил ^ создать диалоговое окно, но получил " Вызывающий поток должен быть STAпотому что многие компоненты пользовательского интерфейса требуют этого"
vk.Authorize(p);
Хорошо, значит, этот метод ^ создает новый поток внутри, и мне нужно показать свой диалог из потока пользовательского интерфейса, я прав?
Я обнаружил, что Dispatcher.Invoke может помочь мне (не BeginInvoke, потому что мне нужно вернуть string ), и написал это
return Dispatcher.Invoke(() =>
{
var two = new TwoFactor();
two.ShowDialog();
return two.Data;
}));
Но теперь мое приложениепросто зависает и никаких диалогов не появляется! Что я делаю не так?