[英]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.