作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
NOTE: I found a workaround to my problem even before asking the question, but I'm still wondering why it behave like this.
我正在做一个普通的 xamarin.iOS 应用程序,使用 async/await
、Mvvm
,...在技术方面没什么特别的。
我发现以下代码(使用方法组
)不起作用:
ViewModel.PropertyChanged += (sender, e) => {
if (e.PropertyName != "MyProperty")
return;
InvokeOnMainThread (tableViewController.TableView.ReloadData);
};
如果我在 InvokeOnMainThread
上放置一个断点,我可以看到异常:
但是使用 lambda 表达式
的相同代码工作得很好。
ViewModel.PropertyChanged += (sender, e) => {
if (e.PropertyName != "MyProperty")
return;
InvokeOnMainThread (() => tableViewController.TableView.ReloadData ());
};
我的一部分在怀疑一个错误,另一部分已经在责备我的无知。谁知道哪一部分是对的?
最佳答案
如果你更仔细地观察你得到的异常,你会看到:
tableViewController.TableView MonoTouch.UIKit.UIKitThreadAccessException [...]
问题是您正在后台线程上获取 TableView 属性(必须完成此操作才能创建 ReloadData 方法的委托(delegate))。
关于c# - InvokeOnMainThread 不适用于 `method group`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19155914/
我是一名优秀的程序员,十分优秀!