我创建了一个相同的自定义控件,其中一些我使用Device.BeginInvokeOnMainThread,但有时会引发错误:
System.NullReferenceException:对象引用未设置为实例 对象的]
读取Device.BeginInvokeOnMainThread
后立即发生此错误,但是如果我将其替换为MainThread.BeginInvokeOnMainThread
可以正常工作。
如果是,则为段代码:
public class EntryRoundPassword : RelativeLayout
{
public EntryRoundPassword() : base()
{
// throws an error
Device.BeginInvokeOnMainThread(() =>
{
......
});
//works ok
MainThread.BeginInvokeOnMainThread(() =>
{
.....
});
}
}
它们之间有什么区别,因为一个抛出错误而另一个没有抛出错误?
MainThread
是Essentials
的一部分,是较新的实现。 Device
实现最终将被弃用。如果您想知道具体的实现差异,可以检查source code