xamarin - Pushing content page from background thread freezes app -


in xamarin forms ios, have custom renderer contentpage displays video control. in xamarin forms app, custom contentpage displayed inside navigationpage. have video screen open when specific message comes in via mqtt.

when open video page clicking link on main screen, opens expected. know receiving message via mqtt , calling navigation.pushmodalasync() because of console statements , breakpoints. however, custom rendered page not displayed , ui of app freezes each time after calling pushmodalasync.

is there else need trigger navigation.pushmodalasync() based on receiving mqtt notification in background of app?

viewroomspage.axml.cs:

[xamlcompilation(xamlcompilationoptions.compile)] public partial class viewroomspage : contentpage {     public viewroomspage()     {         initializecomponent();     }      public string streamuri { get; set; } } 

viewroomspage.axml:

<contentpage xmlns="http://xamarin.com/schemas/2014/forms"          xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"          x:class="myforms.pages.viewroomspage"> <contentpage.content> </contentpage.content> 

videoviewerrenderer.cs (video code removed; should display blank red screen. works when launched button on main screen)

[assembly: exportrenderer(typeof(viewroomspage), typeof(viewroomsrenderer))] namespace myforms.ios.nativeimplementations {     public class viewroomsrenderer : pagerenderer     {         private ijkffmovieplayercontroller _playercontroller;          protected override void onelementchanged(visualelementchangedeventargs e)         {              base.onelementchanged(e);              if (e.oldelement != null || element == null)             {                 return;             }              e.newelement.backgroundcolor = color.red;         }     } } 

method triggered receiving mqtt message

    public void pushviewrooms()     {         device.begininvokeonmainthread(async () =>         {             await application.current.mainpage.navigation.pushmodalasync(new viewroomspage());         });     } 

in app.xaml.cs:

public partial class app : application {     public app()     {         setupdependencies(); // using structuremap         manager = dependencycontainer.resolve<imqttmanager>();         manager.connect();                      initializecomponent();          var mainpage = new mainpage();         mainpage = new navigationpage(mainpage);     } } 

the problem deadlock caused task.waitall() being triggered in section of code running in background.

thanks helped sanity check wasn't in way renderer set up.


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -