我有一个带有两个单例类的UWP应用,一个用于会话包含用户信息,另一个用于列表。当用户最小化该应用程序时,该应用程序将被挂起,并且垃圾回收器将破坏会话和权限类,因此,在最大化应用程序后,该用户将没有权限。
我不想使用OnSuspending和OnResume事件来保存/序列化类,因为由于吐司通知而需要会话信息。
有没有一种方法可以告诉垃圾收集器让它们完全独立? 我尝试在OnSuspending事件中致电GC.Keepalive,但这无济于事。
编辑:根据要求,这是我的会话单例代码:
public class Session
{
private Session()
{
}
~Session()
{
session = this;
}
private static Session session;
public static Session Current
{
get
{
if (session == null)
session = new Session();
return session;
}
}
public async Task<bool> LogIn(string username, string password)
{
///
}
public void LogOut()
{
///
}
public UserRights Permissions { get; set; }
public User User { get; set; }
public int UserId { get; set; }
public string Token { get; set; }
我试图通过终结器绕过它,但是在挂起和垃圾回收之间只有一小段时间。在这个时候问题仍然存在。 当我在垃圾回收后最大化应用程序时,它就起作用了。