diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index 40584006cd..91b77dcf1f 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -16,7 +16,7 @@ using osu.Game.Users; namespace osu.Game.Online.API { - public class APIAccess : IAPIProvider + public class APIAccess : IAPIProvider, IDisposable { private readonly OsuConfigManager config; private readonly OAuth authentication; @@ -27,7 +27,7 @@ namespace osu.Game.Online.API private ConcurrentQueue<APIRequest> queue = new ConcurrentQueue<APIRequest>(); - public Scheduler Scheduler = new Scheduler(); + public readonly Scheduler Scheduler = new Scheduler(); /// <summary> /// The username/email provided by the user when initiating a login. @@ -310,6 +310,23 @@ namespace osu.Game.Online.API { Scheduler.Update(); } + + private void dispose() + { + config.Set(OsuSetting.Token, config.Get<bool>(OsuSetting.SavePassword) ? Token : string.Empty); + config.Save(); + } + + public void Dispose() + { + dispose(); + GC.SuppressFinalize(this); + } + + ~APIAccess() + { + dispose(); + } } public enum APIState diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 2096318a32..a3e4d34659 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -245,14 +245,8 @@ namespace osu.Game protected override void Dispose(bool isDisposing) { - //refresh token may have changed. - if (LocalConfig != null && API != null) - { - LocalConfig.Set(OsuSetting.Token, LocalConfig.Get<bool>(OsuSetting.SavePassword) ? API.Token : string.Empty); - LocalConfig.Save(); - } - base.Dispose(isDisposing); + API.Dispose(); } private readonly List<ICanAcceptFiles> fileImporters = new List<ICanAcceptFiles>();