Всплывающее окно, показывающее увеличивающееся количество раз форм xamarin - PullRequest
0 голосов
/ 05 июня 2018

Я заметил одну вещь с веб-сервисами в формах xamarin.Это мой код .cs

static readonly EndpointAddress Endpoint = new EndpointAddress("myWebService");
IVSConnectAPIClient client;
public MainPage()
{
    InitializeComponent();
    BasicHttpBinding binding = CreateBasicHttpBinding();
    client = new IVSConnectAPIClient(binding, Endpoint);
}
private void Button_Clicked(object sender, EventArgs e)
{
    if(condition){
        client.UserLoginAsync(pass parameters);
        client.UserLoginCompleted += Client_UserLoginCompleted;
    }
    else{ 
        DisplayAlert("Alert!", "Please enter User ID and Password to proceed.", "OK");
    }
}
public void Client_UserLoginCompleted(object sender, UserLoginCompletedEventArgs e)
{
    //result from web service
    if(conditon){
        //go to another page
    }else{
        DisplayAlert("Alert!", "Credential doesnt match the system", "OK");
}

, поэтому так и происходит.Когда я ввожу неверный логин и пароль и нажимаю на кнопку, он отлично показывает мне предупреждение (1 раз), но когда я нажимаю с тем же неверным логином и парой 2, код выполняется дважды и всплывающее окно 2 раза, а когда я нажимаюс тем же неверным логином и пропуском в третий раз всплывающее окно показывается 3 раза и так далее.

Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 05 июня 2018

При каждом нажатии кнопки вы снова подписываетесь на событие UserLoginCompleted.Таким образом, каждый раз, когда происходит событие, каждая подписка уведомляется.

Решение состоит в том, чтобы подписаться только один раз, например, в конструкторе:

client = new IVSConnectAPIClient(binding, Endpoint);
client.UserLoginCompleted += Client_UserLoginCompleted;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...