为什么 AmazonCognitoIdentityProviderClient 在 C# Xamarin 中死锁?

Why does AmazonCognitoIdentityProviderClient deadlock in C# Xamarin?

我在 C# 和 WPF 中使用了名为 aws-cognito-dot-net-desktop-appaws-samples 示例在 Windows PC 应用程序中:

aws-cognito-dot-net-desktop-app

它运行良好,可以在 Cognito 中正确注册用户。

现在,我将相同的代码用于 Android 应用程序和 C#。

要注册用户,请执行以下操作:

bool success = await helper.SignUpUser(etUserName.Text, etPasswordUser.Text, etEmailUser.Text, etPhoneUser.Text);

注册用户如下:

internal async Task <bool> SignUpUser (string username, string password, string email, string phonenumber)
{

   Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient provider =
                     new Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient(new 
   Amazon.Runtime.AnonymousAWSCredentials());

   SignUpRequest signUpRequest = new SignUpRequest();

   ....
}

但是这部分,在创建provider的时候,代码卡住了:

没有异常或其他类型的错误发生。

有没有办法找出 Visual Studio 发生了什么?

欢迎任何意见或建议。

更新

我调用SignUpUser的方式是这样的:

private async void clickCreateUser(object o, EventArgs e)
{
   ...
   try
   {

      CognitoHelper helper = new CognitoHelper();
      bool success = await helper.SignUpUser(etUserName.Text, etPasswordUser.Text, etEmailUser.Text, etPhoneUser.Text);
      ...

   }
   catch (Exception ex)
   {
    Android.Widget.Toast.MakeText(Application.Context, "Error: " + ex.Message, Android.Widget.ToastLength.Long).Show();
   }
}

更新2

我得到了一个 Xamarin 的例子。此 link 的形式:

xamarinforms-awscognito

在查看代码并了解如何创建提供者时,我将代码更改为如下:

Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient provider = new Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient(/*new Amazon.Runtime.AnonymousAWSCredentials()*/new AnonymousAWSCredentials(), RegionEndpoint.USEast1);

现在代码不会冻结并转到下一行:

我需要继续检查其余代码以确定其他可能的问题

解决方法是设置正在使用的AWS区域,如下:

Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient provider = new Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), RegionEndpoint.YourRegionAWS);