Voorkom exceptions van MessageDialogs

Wanneer je MessageDialogs gebruikt voor het tonen van meldingen aan de gebruiker moet je op letten dat je niet probeer een dialog te openen terwijl er nog een andere MessageDialog open staat. Doe je dat wel wordt er een exception gegooid. Wanneer de message dialog niet perse hoeft te worden getoont kan je natuurlijk met een simpele try catch de exception oplossen. Echter laat je niet voor niks de Melding zien. Hiervoor moeten dus extra maatregelen worden getroffen. Met een simpele extension method kan je zorgen dat de meldingen na elkaar verschijnen.

 

public static class MessageDialogShower
    {
        private static SemaphoreSlim _semaphore;

        static MessageDialogShower()
        {
            _semaphore = new SemaphoreSlim(1);
        }

        public static async Task<IUICommand> ShowDialogSafely(this MessageDialog dialog)
        {
            await _semaphore.WaitAsync();
            var result = await dialog.ShowAsync();
            _semaphore.Release();
            return result;
        }
    }

Gebruik nu voortaan deze extension method ipv de ShowAsync method. Je kan het eenvoudig tensten door in de onnavigate de volgende method toe te voegen, natuurlijk zou in dit geval await voor ShowAsync afdoende zijn maar het is vooral handig wanneer je uit verschillende processen een dialog wil tonen:

var d1 = new MessageDialog("1 test");
d1.ShowDialogSafely();

var d2 = new MessageDialog("2 test");
d2.ShowDialogSafely();

  

  •   @tfsbuck thanks
  •   @densto @VSTS see email. one just timed out but that causing the other one that was waiting got picked up directly
  •   @VSTS did you send all your build agents already for weekend?
  •   @tfsbuck already made a issue https://t.co/u0EcaMewlV
  •   @tfsbuck back again :) you guys updated tf-cli today from .11 to .13 and now getting this error when try to publish… https://t.co/GLMVwL7HDZ
  •   @jpaternotte Soort zoekt soort! Past goed tussen de andere 149 clowns
  •   @sandeepchads @VSTS in the vsts sdk they are already visible; just returning 401
  •   RT @msbotframework: LUIS and the Azure Bot Service have just hit GA! 🎉 https://t.co/QVttVKrSWe
  •   @sandeepchads @VSTS Integration with my activity feed. Are the apis already open?
  •   @tfsbuck nice i had hard time to find the reproduction path. they also fixed my issue with publishing extension. new build task coming soon!