我有一个下载任务,它分 4 个步骤从 Web 下载数据,这些步骤被定义为异步任务并逐个运行。现在由于一些变化,我需要从任务 2 和 3 之间的自定义对话框中捕获用户输入。我编写了一个函数来捕获来自 AlertDialog 的输入。问题是在两者之间显示对话框,但它只是不等待并停止处理,并且过程继续进行而不需要用户输入。代码是这样的:
async void button_click(......){
await function1();
await function2();
await function3();
await function4();
....do the data processing after that.
}
async Task<datatype> function1(){ ...processing step 1 }
async Task<datatype> function2(){
new AlertDialog.Builder(this)
.SetPositiveButton("OK", (sender, args) =>
{
string inputText = txtInput.Text;
})
.SetView(customView)
.Show();
.... some more processing
}
有什么方法可以停止处理,直到从 AlertDialog 接收到用户输入或任何其他方式做同样的事情?
最佳答案
你可能会这样做:
public Task<bool> ShowDialog()
{
var tcs = new TaskCompletionSource<bool>();
new AlertDialog.Builder(this)
.SetPositiveButton("OK", (sender, args) =>
{
string inputText = txtInput.Text;
tcs.SetResult(true);
})
.SetView(customView)
.Show();
return tcs.Task;
}
那么你可以这样做:
await function1();
await ShowDialog();
await function2();
关于android-asynctask - Xamarin - 任务等待来自自定义对话框的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965486/