注意:我發現了一個解決辦法,以我的問題,甚至問 問題之前,但我仍然不知道爲什麼會這樣的表現。InvokeOnMainThread不`方法工作group`
我在做一個平常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());
};
我的一部分懷疑是一個bug,另一部分已經責怪我的無知。任何人都知道哪一部分是對的?
我假設'ReloadData'按預期返回void?它不返回說.. int或布爾? –
是的,它是無效的。兩種語法都是有效的,並且編譯得很好。一個在UI線程中運行,另一個不在。 –
奇怪..你不會期望它與Action或Expression有不同的表現。我不是Mono開發者......但我甚至找不到適當的InvokeOnMainThread方法文檔或任何有關每個重載如何工作的正確解釋。從Windows開發人員..我不會指望它有不同的表現。 –