InvokeOnMainThread не работает с " группой методов`
Примечание : я нашел обходной путь к своей проблеме еще до того, как спросил вопрос, но я все еще удивляюсь, почему он так себя ведет.
Я делаю обычный xamarin.приложение iOS, использующее async/await, Mvvm, ... ничего особенного на технологической стороне.
Я обнаружил, что следующий код (используя method group) не работает:
ViewModel.PropertyChanged += (sender, e) => {
if (e.PropertyName != "MyProperty")
return;
InvokeOnMainThread (tableViewController.TableView.ReloadData);
};
Если я поставлю точку останова на InvokeOnMainThread, я могу увидеть исключение:

Но тот же код с lambda expression прекрасно работать.
ViewModel.PropertyChanged += (sender, e) => {
if (e.PropertyName != "MyProperty")
return;
InvokeOnMainThread (() => tableViewController.TableView.ReloadData ());
};
Часть меня подозревает ошибку, другая часть уже обвиняет мое невежество. Кто-нибудь знает, какая часть верна ?2 ответа:
Если вы посмотрите более внимательно на исключение, которое вы получаете, вы увидите следующее:
tableViewController.TableView MonoTouch.UIKit.UIKitThreadAccessException [...]Проблема заключается в том, что вы извлекаете свойство TableView (которое должно быть сделано для создания делегата метода ReloadData) в фоновом потоке.