儘管此前已在StackOverflow上發佈,但我認爲這些反映了我的問題,並且這些解決方案都不適用於我。所以,我正在開發一個Windows Phone應用程序和我的工作流程是有點像這樣:Windows Phone ContactPicker將不會正常等待
- 應用開始
- ContactPicker開闢了
- 用戶選擇一個或多個聯繫人
- 基於有多少接觸,他選中,許多PivotItems被添加到Pivot中。
我的代碼如下:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// TODO: Prepare page for display here.
// TODO: If your application contains multiple pages, ensure that you are
// handling the hardware Back button by registering for the
// Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
// If you are using the NavigationHelper provided by some templates,
// this event is handled for you.
SelectContacts();
}
private async Task SelectContacts()
{
var picker = new ContactPicker();
picker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
ContactsList = (List<Contact>)await picker.PickContactsAsync();
DisplayContacts();
}
private void DisplayContacts()
{
if (ContactsList != null)
{
foreach (var item in ContactsList)
{
PivotItem pivotItem = new PivotItem();
pivotItem.Header = item.FirstName.ToString();
ContentRoot.Items.Add(pivotItem);
}
}
}
據我,SelectContacts()方法,應用程序應等待在的await調用,一旦回來的聯繫人列表,比它應該執行DisplayContacts()方法,但它不起作用。我試過這個代碼的多個其他變體,他們也不工作。
「不工作」是什麼意思? – i3arnon 2015-02-07 07:30:15
@ i3arnon它沒有以正確的順序運行。等待後的任何事情都應該在該行完全執行後運行,但在我的情況下,它不會等待await行完全執行。 – haseebahmed7 2015-02-07 08:40:06
你是什麼意思「等待後的任何事情」。我向你保證,DisplayContacts只會在等待的操作完成後才運行。還有別的嗎? – i3arnon 2015-02-07 08:43:33