暂停应用程序时,垃圾收集器会破坏单例对象

时间:2018-06-21 10:36:54

标签: c# .net uwp garbage-collection

我有一个带有两个单例类的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; }

我试图通过终结器绕过它,但是在挂起和垃圾回收之间只有一小段时间。在这个时候问题仍然存在。 当我在垃圾回收后最大化应用程序时,它就起作用了。

0 个答案:

没有答案