xamarin:Device.BeginInvokeOnMainThread和MainThread.BeginInvokeOnMainThread之间的区别

问题描述 投票:0回答:1

我创建了一个相同的自定义控件,其中一些我使用Device.BeginInvokeOnMainThread,但有时会引发错误:

System.NullReferenceException:对象引用未设置为实例 对象的]

读取Device.BeginInvokeOnMainThread后立即发生此错误,但是如果我将其替换为MainThread.BeginInvokeOnMainThread可以正常工作。

如果是,则为段代码:

public class EntryRoundPassword : RelativeLayout
    {
             public EntryRoundPassword() : base()
            {
                  // throws an error
                  Device.BeginInvokeOnMainThread(() =>
                  {
                      ......
                  });

                   //works ok
                   MainThread.BeginInvokeOnMainThread(() =>
                   {
                      .....
                   }); 
            }
    }

它们之间有什么区别,因为一个抛出错误而另一个没有抛出错误?

c# xamarin
1个回答
1
投票

MainThreadEssentials的一部分,是较新的实现。 Device实现最终将被弃用。如果您想知道具体的实现差异,可以检查source code

© www.soinside.com 2019 - 2024. All rights reserved.