Как вызвать WinRT из кода программной части MAUI в нужном потоке?
Я пытаюсь использовать GraphicsCapturePicker
из кода программной части в
MAUI
app, и я получаю исключение COM, что означает, что я вызываю его из неправильного потока. Обычно код в файлах кода программной части WPF / XAML отправляется из основного потока, поэтому я немного не понимаю, что здесь происходит не так:
// A regular button event handler in MainPage.xaml.cs
private void OnScreenCaptureClicked(object sender, EventArgs e)
{
var picker = new GraphicsCapturePicker();
GraphicsCaptureItem item = picker.PickSingleItemAsync().GetResults();
}
Выдает исключение:
"The application called an interface that was marshalled for a different thread"
Exception thrown: 'System.Runtime.InteropServices.COMException' in System.Private.CoreLib.dll
Примечание. В приведенном выше примере я вызываю метод синхронно в качестве теста, чтобы упростить перехват исключения. То же самое происходит, когда он заключен в задачу.
Этот точный код отлично работает в обычном проекте UWP / C #, отличном от MAUI.