C# 如何使用mvvmcross解析android服务中的注册服务(工作对象)?

C# 如何使用mvvmcross解析android服务中的注册服务(工作对象)?,c#,android,mvvmcross,application-lifecycle,C#,Android,Mvvmcross,Application Lifecycle,我试图在android服务中使用mvvmcross,代码如下: public interface IMyWorkerObject { void ShowNotificationIcon(); } [Service] public class MyAndroidService : Service { private Thread myThread; public override void OnCreate() { myThread = new T

我试图在android服务中使用mvvmcross,代码如下:

public interface IMyWorkerObject
{
    void ShowNotificationIcon();
}

[Service]
public class MyAndroidService : Service
{
    private Thread myThread;
    public override void OnCreate()
    {
        myThread = new Thread(() =>
            {
                do
                {
                    var myWorkerObject = Mvx.Resolve<IMyWorkerObject>();
                    myWorkerObject.ShowNotificationIcon();    
                    Thread.Sleep(10000);
                } while (true);
            });
        myThread.IsBackground = true;
        myThread.Start();
        base.OnCreate();
    }
    public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
    {
        return StartCommandResult.Sticky;
    }
    public override void OnDestroy()
    {
        if (myThread != null)
        {
            if (myThread.IsAlive)
                myThread.Abort();
            myThread = null;
        }
    }
    public override IBinder OnBind(Intent intent)
    {
        return null;
    }
}
公共接口IMyWorkerObject
{
void ShowNotificationIcon();
}
[服务]
公共类MyAndroidService:服务
{
私有线程读取;
public override void OnCreate()
{
myThread=新线程(()=>
{
做
{
var myWorkerObject=Mvx.Resolve();
myWorkerObject.ShowNotificationIcon();
睡眠(10000);
}虽然(正确);
});
myThread.IsBackground=true;
myThread.Start();
base.OnCreate();
}
公共覆盖StartCommandResult OnStartCommand(意图、StartCommandFlags标志、int-startId)
{
返回StartCommandResult.Sticky;
}
公共覆盖无效OnDestroy()
{
if(myThread!=null)
{
如果(myThread.IsAlive)
myThread.Abort();
myThread=null;
}
}
公共覆盖iBind OnBind(意图)
{
返回null;
}
}
我的app.cs中有这个代码

public class App : MvxApplication
{
    // ... some code ...
    public override void Initialize()
    {
        base.Initialize();

        //Initializing Plugins..
        PluginLoader.Instance.EnsureLoaded();

        //Initializing Work Objects..
        var services = CreatableTypes()
            .EndingWith("Service");

        // start android service
        var context = Application.Context;
        var intent = new Intent(Application.Context, typeof(MyAndroidService ));
        context.StartService(intent);

        //Initializing Start Navigation
        RegisterAppStart<MainViewModel>();
    }

    // ... some code ...
公共类应用程序:MVX应用程序
{
//…一些代码。。。
公共覆盖无效初始化()
{
base.Initialize();
//正在初始化插件。。
PluginLoader.Instance.EnsureLoaded();
//正在初始化工作对象。。
var services=createabletypes()
.以“服务”结尾;
//启动android服务
var context=Application.context;
var intent=新的intent(Application.Context,typeof(MyAndroidService));
上下文。StartService(意图);
//初始化启动导航
RegisterAppStart();
}
//…一些代码。。。
}

由于返回
StartCommandResult.Sticky
android服务重新启动,但在
var myWorkerObject=Mvx.Resolve()处抛出异常OnCreate
方法中的code>:

错误:System.NullReferenceException:对象引用未设置为 位于的对象的实例 在中解析[IMyWorkerObject]()[0x00000] :0位于App1.MyAndroidService.b_u0() [0x00000]英寸:0


我做错了什么,或者更好的说法是,有没有关于如何将android服务与mvvmcross结合使用的示例?

看看上面的问题和答案——但也要看看mvvmcross github上的问题——有一些棘手的线程问题很难避免。我通常尽可能避免使用自己的线程,并使用async/Wait。过去,当我将简单任务转换为async/await时,它们最终“正常工作”。我也看到了这个错误,你找到解决方案了吗?