私はプロパティを持っています。ゲッターでは、私は非同期メソッドを呼び出したい。たぶんC#でのプロパティの非同期
if (timediff.TotalMinutes < 55)
App.Locator.Login.GetRefreshToken().RunSynchronously();
は、問題を解決することができます
public string AuthToken
{
get
{
TimeSpan timediff = App.Locator.Login.TokenExpire_On.ToLocalTime() - DateTime.Now.ToLocalTime();
if (timediff.TotalMinutes < 55)
App.Locator.Login.GetRefreshToken();
// before return the value i want to complete the work of GetRefreshToken(), GetRefreshToken is a async method.
return AppSettings.GetValueOrDefault<string>(AuthTokenKey, AuthTokenDefault);
}
set
{
AppSettings.AddOrUpdateValue<string>(AuthTokenKey, value);
}
}
public async Task GetRefreshToken()
{
if (string.IsNullOrEmpty(this.AuthToken))
return;
AzureRefreshToken refreshToken = await UserProfileService.RefreshToken(this.AuthToken);
Settings.AuthToken = refreshToken.RefreshToken;
TokenExpire_On = DateTime.Now.AddHours(1);
}
[ゲッターまたはセッターから非同期メソッドを呼び出す方法は?](http://stackoverflow.com/questions/6602244/how-to-call-an-async-method-from-a-getter) -or-setter) – Sinatr
あなたの問題について別の方法を考えてみましょう。期限切れになるまで何も何も 'AuthToken'を呼び出さないのでしょうか?現在のプロパティベースのソリューションでは、有効期限が切れる直前にその5分間のウィンドウでコールが行われることを前提としています。 IMOでは、リフレッシュループを持つ方が適切です。 –