簡體   English   中英

Windows物聯網核心應用程序未捕獲到異常

[英]exception not caught in windows iot core application

我正在運行在rasberry pi3上運行的Windows IoT核心應用程序,我嘗試使用以下方法從Azure IoT中心創建/獲取設備密鑰

public MainPage()
    {
        systemName = "RaspIot";
        this.InitializeComponent();

        /* Register for the unloaded event so we can clean up upon exit */
        Unloaded += MainPage_Unloaded;

        registryManager = RegistryManager.CreateFromConnectionString(connectionString);
        AddDeviceAsync().Wait();
    }

    private static async Task AddDeviceAsync()
    {
        Device device;

        try
        {
            device = await registryManager.AddDeviceAsync(new Device(systemName));
        }
        catch (DeviceAlreadyExistsException)
        {
            device = await registryManager.GetDeviceAsync(systemName);
        }

        deviceKey = device.Authentication.SymmetricKey.PrimaryKey;
    }

如果名稱為“ RaspIot”的設備已注冊,則會引發異常。 在.net45控制台應用程序中,這可以正常工作。 但在PI3的UWP應用程序中會拋出異常(調試時彈出該異常),但捕獲未捕獲該異常)。 我應該怎么做?

我可以重現您的問題。 當使用您的代碼運行UWP應用時,UI會掛起並且沒有響應。 因此,這不是UWP應用程序中的最佳實踐。

在UWP應用中,您可以直接使用AddDeviceAsync()而不使用Wait() 它將正常執行並可以捕獲異常。

但是在控制台應用程序中,如果刪除Wait()運算符,則該應用程序將退出而不完成任務。 因此它們是不同的。

要在UWP中調用異步API,可以參考本文檔

更新:

並且不建議在MainPage函數中注冊設備,因為它將在每次啟動應用程序時始終執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM