Ошибка в наборе пользовательского интерфейса. Ошибка согласованности.C#

Место общения программистов C#
Anonymous
Ошибка в наборе пользовательского интерфейса. Ошибка согласованности.

Сообщение Anonymous »

У меня возникла проблема с доступом к текстовому полю в CS-файле контроллера представления

Код: Выделить всё

 async partial void loginUser(UIButton sender)

{

// Show the progressBar as the MainActivity is being loade

Console.WriteLine("Entered email : " + txtEmail.Text);

// Create user object from entered email
mCurrentUser = mJsonHandler.DeserialiseUser(txtEmail.Text);
try
{

Console.WriteLine("Starting network check");
// Calls email check to see if a registered email address has been entered
if (EmailCheck(txtEmail.Text) == true)
{
await  CheckPassword();
}
else
{
UIAlertView alert = new UIAlertView()
{
Title = "Login Alert",
Message = "Incorrect email or password entered"
};
alert.AddButton("OK");
alert.Show();

}

}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("An error has occured: '{0}'", ex);
}
Именно в этой функции она жалуется, что не может получить доступ к текстовому полю, которое находится в асинхронном методе.

Код: Выделить всё

    public Task CheckPassword()
{

return Task.Run(() =>
{
// Creates instance of password hash to compare plain text and encrypted passwords.
PasswordHash hash = new PasswordHash();
// Checks password with registered user password to confirm access to account.
if (hash.ValidatePassword(txtPassword.Text ,mCurrentUser.password)==true)
{
Console.WriteLine("Password correct");

UIAlertView alert = new UIAlertView()
{
Title = "Login Alert",
Message = "Password Correct Loggin In"
};
alert.AddButton("OK");
alert.Show();
//insert intent call to successful login here.

}
else
{
UIAlertView alert = new UIAlertView()
{
Title = "Login Alert",
Message = "Incorrect email or password entered"
};
alert.AddButton("OK");
alert.Show();

}
Console.WriteLine("Finished check password");
});
}
В этой строке возникает ошибка:

Код: Выделить всё

txtPassword.Text
Ошибка следующая:


UIKit.UIKitThreadAccessException: ошибка согласованности UIKit : вы
вызываете метод UIKit, который можно вызвать только из потока пользовательского интерфейса.


Также мой правильный пароль не работает показать, даже если это правильный пароль.
Нужно ли мне запускать оповещения пользовательского интерфейса в отдельном потоке?

Подробнее здесь: https://stackoverflow.com/questions/391 ... ency-error

Вернуться в «C#»