InvokeOnMainThread () не обязательно вызывает основной поток - ошибка или функция? - PullRequest
1 голос
/ 30 ноября 2011

Я использую Timer, и пусть он выполняет регулярные проверки.Если условие проверки истинно, я запускаю поток и позволяю ему делать то, что должен.

Если внутри этого потока я хочу изменить используемый мной интерфейс InvokeOnMainThread().Но поскольку поток был запущен из Timer, который уже является отдельным потоком, InvokeOnMainThread() будет вызывать вещи в потоке Таймера, а не в реальном главном потоке.Я работаю над этим, упаковав два InvokeOnMainThread() звонка.

Это работает как задумано или это ошибка в фреймворке Mono?Основной поток определен как тот, который запустил текущий поток, или он должен вернуть «корневой» поток?

1 Ответ

1 голос
/ 30 ноября 2011

NSObject.InvokeOnMainThread - это, в основном, оболочка вокруг executeSelectorOnMainThread: withObject: waitUntilDone:

Цитата из документации:

Вы можете использовать этот метод для доставки сообщений в основной поток вашего приложения. Основной поток охватывает основной цикл выполнения приложения и является местом, где объект NSApplication получает события.

Мы можем углубиться в это (кажется странным), если вы заполните отчет об ошибке в http://bugzilla.xamarin.com вместе с отдельным тестовым примером.

...