在Blazor WASM中,可以使用JavaScript的TaskCompletionSource
来阻塞任务直到用户输入。以下是一个示例解决方法:
public class UserInputService
{
private TaskCompletionSource userInputTaskCompletionSource;
public Task GetUserInputAsync()
{
userInputTaskCompletionSource = new TaskCompletionSource();
return userInputTaskCompletionSource.Task;
}
public void SetUserInput(string userInput)
{
userInputTaskCompletionSource.SetResult(userInput);
}
}
getUserInput
,用于获取用户输入,并调用C#类中的方法:
UserInputService
:@inject UserInputService UserInputService
@code {
private async Task GetUserInputAsync()
{
string userInput = await UserInputService.GetUserInputAsync();
// 处理用户输入
}
}
这样,当用户点击“Get User Input”按钮时,将弹出一个提示框让用户输入,输入完成后,任务将继续执行并处理用户输入。