1
在處理手機的Windows 10 UWP應用程序時,我遇到了聯繫人選擇器API對象的問題。該手機安裝了Developer Preview 10532。Windows 10 UWP應用程序在異步挑選聯繫人時崩潰
我有這樣的事件處理程序的按鈕:
private async void pickContactAppBar_Click (object sender, RoutedEventArgs e)
{
try
{
ContactPicker contactPicker = new ContactPicker();
IList<Contact> pickedContacts = await contactPicker.PickContactsAsync();
if (pickedContacts != null)
int pickedContactsCount = pickedContacts.Count;
}
catch (Exception ex)
{
MessageDialog messageDialog = new MessageDialog(ex.Message);
await messageDialog.ShowAsync();
}
}
這是應該給予我接觸與聯絡人挑選挑選。
問題是,在聯繫人選擇器窗口出現後,在我設法選擇聯繫人之後,應用程序在半秒後崩潰。即使在顯示選取器後我沒有做任何事情,它也會崩潰,但只是簡單地等待。它似乎在加載聯繫人列表期間崩潰...
它發生在我部署調試或釋放代碼,但不是當我通過按F5從Visual Studio啓動應用程序時。另外,也不會拋出異常。
我很確定我正在使用異步並正確等待。由於這個方法是一個事件處理程序,它必須是異步無效的。
該方法包含更多的代碼,更多的是等待,但我添加了MessageDialog調用來查看它結束的位置,並且在調用PickContactsAsync()之後發生。之後沒有任何東西被執行。我甚至評論過其代碼的所有其他部分。
關於可能發生什麼的任何建議?謝謝。
什麼是例外?你是否從後臺線程修改UI線程? –
@O.O,有**沒有例外**。不,我沒有那樣做。我只想選擇一個或多個聯繫人,從返回的聯繫人類型對象中獲取一些字段。但即使我在事件處理程序中只有這些代碼,也會發生崩潰,沒有別的。只要選擇器出現並且聯繫人列表開始填滿,半秒鐘後就會崩潰,而沒有任何用戶輸入。 – robcsi
在主頁面的構造函數中調用異步函數是不是很好的做法?它不能用await調用,因爲構造函數不能做成異步。我有一個async void Init()函數,這個函數就是這樣調用的... – robcsi