私はXamarin移植プロジェクトで自分のコードに問題があります。私のブール値フラグはイベントハンドラメソッドの前に実行されますが、私はこれを望ましくありません。イベントハンドラの後にコードを実行
静的Client.cs(唯一のWebサービスに接続する必要がありますクラス)アプリで
public static bool IsConnected;
private static string _username;
private static string _password;
private static void Login()
{
// all login procedures
Connection.ServiceUserAuthorisationCompleted += UserAuthorisationCompleted;
Connection.ServiceUserAuthorisationAsync(_login, _password);
}
private static void UserAuthorisationCompleted(object sender, ServiceUserAuthorisationCompletedEventArgs e)
{
IsConnected = e.Result.status.Equals("1");
}
public static Task LoginAsync(string username, string password)
{
_username = username;
_password = password;
var task = new Task(Login);
task.Start();
return task;
}
と私のログインページ:クラスが初期化されていませんIsConnected
Client
に
private async void SignInClicked(object sender, EventArgs e)
{
var login = Login.Text;
var password = Password.Text;
await Client.LoginAsync(login, password);
if (Client.IsConnected)
{
MyCredentials.SaveCredentials(login, password);
}
}
フラグ私のif
ステートメントの前に、イベントハンドラはいつでもどこでも実行します。
イベントベースの非同期パターンとタスクベースの非同期パターンの間にブリッジを構築する必要があります。 https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types#EAP – Fildor
ありがとう@Fildor あなたの返信は非常に役に立ちました – vamteusz