簡體   English   中英

等待用戶從 ContentDialog 輸入時如何處理

[英]How to process while waiting for user input from ContentDialog

對於異步任務,我經常推遲await執行其他處理,同時等待異步任務返回。 例如,而不是:

bool t = await myAsync();

我用

Task<bool> t = myAsync();
//do something else here while waiting
await t; //or await Task.WhenAll(t, p, s); when more than one

如何將這種方法與ContentDialog 我想向用戶顯示內容對話框並在用戶等待響應時執行其他處理。

我嘗試了以下方法,但失敗了,因為ContentDialog返回IAsyncOperation而不是Task

Task<ContentDialogResult> result = myContentDialog.ShowAsync();
//do something else here
await result;

我怎樣才能做到這一點?

IAsyncOperation工作方式類似於Task 我能夠通過等待IAsyncOperation然后使用GetResults()來獲取用戶響應來實現這一點。

要復制創建一個名為“MyTextBox”的ButtonTextBox然后將下面的代碼粘貼到Button_Clicked事件中。

//prep dialog
ContentDialog dialog = new ContentDialog
{
     Content = "Test Dialog",
     Title = "Test Dialog",
     SecondaryButtonText = "Cancel",
     PrimaryButtonText = "OK"
};


//show dialog
IAsyncOperation<ContentDialogResult> result = dialog.ShowAsync();

//do some background processing
MyTextBlock.Text = "background processing...";

//wait for user response
_ = await result;

//get user response
ContentDialogResult buttonClicked = result.GetResults();
            
//display user response on screen
if(buttonClicked != ContentDialogResult.Primary)
{
    MyTextBlock.Text += "\nYou cancelled!";
}
else
{
   MyTextBlock.Text += "\nYou pressed OK!";
}

暫無
暫無

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

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