Как решить "Приложение вызывает интерфейс, который был организован для другого потока" - PullRequest
0 голосов
/ 08 июня 2018

У меня есть приложение UWP, я хочу использовать метод в MainPage.xaml.cs в App.xaml.cs, по какой-то причине метод в MainPage.xaml.cs не может быть объявлен как статический, поэтому я создаю экземпляр класса MainPage вApp.xaml.cs, но выдает следующее исключение:

Приложение вызывает интерфейс, организованный для другого потока。 (Исключение из HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

Это код в App.xaml.cs:

//"MainPage MP = new MainPage()"Error:The application invokes an interface that has been organized for another thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))
MainPage MP = new MainPage();
string mess = await MP.myFunction();

Это код в MainPage.xaml.cs:

public async Task<string> myFunction()
{
   string back = "this is my code";
   return back;
}

Как решить эту проблему, Спасибо

1 Ответ

0 голосов
/ 13 июня 2018

Вам определенно следует переместить метод, который вам нужно использовать, из MainPage, если он содержит общую бизнес-логику, которая на самом деле не является частью MainPage в идеальном мире, файлы с выделенным кодом должны быть очищены без кода, за исключением некоторыхКод только для пользовательского интерфейса, который управляет фактическими элементами управления страницы.

Обычно бизнес-логика находится в сервисах, которые затем вызываются из классов моделей представления, связанных с пользовательским интерфейсом.Это оптимальное разделение интересов.Когда у вас есть метод, который находится на странице, и вам нужно использовать его с другой страницы, это, очевидно, метод бизнес-логики, который должен быть скорее в классе обслуживания, который может вызываться из обоих мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...