C# TgSharp протухает авторизация

Авторизируюсь в телеграм

  public ParseTelegram(int clientId, string clientHash, string phone)
    {
        try
        { 
        _phone = phone;

        //client = new TelegramClient(clientId, clientHash, null, phone);
         client = new TelegramClient(clientId, clientHash, new CustomSessionStore(), phone);
          
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
            
        }
      }

 public async Task<bool> Initialize()
    {
        try
        { 

        await client.ConnectAsync();

        if (!_authorized && !client.IsUserAuthorized())
        {
            _hash = await client.SendCodeRequestAsync("+" + _phone);

            return true;
        }

        _authorized = true;
        return false;

        }
        catch(Exception e)
        {
            MessageBox.Show(e.ToString());
            return false;
        }
         
    }

     public async Task SendCode(string code)
    {
        try
        {

        if (!_authorized)
        {
            TLUser auth = await client.MakeAuthAsync(_phone, _hash, code);
            _authorized = true;
        }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
            
        }
        
    }

Затем я хочу получить информацию о канале:

username - название канала

   async public Task<TLChannel> GetChannel(string username)
    {
        try
        { 

        if (!_authorized)
            {
                MessageBox.Show("error");
            } 
            TLRequestResolveUsername requestResolveUsername = new TLRequestResolveUsername()
            {
                Username = username
            };
             
            TLResolvedPeer peer = await   client.SendRequestAsync<TLResolvedPeer>(requestResolveUsername);
            
            TLChannel channel = (TLChannel)peer.Chats.First();
          
            MessageBox.Show(channel.Title);
            
        return channel;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
            return null;
        }
         
    }

Код работает, но есть проблема.

После нескольких успешных попыток код зависает на:

   TLResolvedPeer peer = await   client.SendRequestAsync<TLResolvedPeer>(requestResolveUsername);
            
   TLChannel channel = (TLChannel)peer.Chats.First();

При этом я не получаю никаких сообщений об ошибке. Я думаю это как то связанно с повреждением .dat файла в котором текущая сесия.

Если после успешной авторизации я делаю копию .dat файла, а при появлении ошибки удаляю текущий и заменяю его ранее созданой копией - ошибка пропадает.

Т.е. алгорит работы при появлении ошибки у меня следующий:

  File.Delete(path + @"\Sessions\" + phone + ".dat");
                                     
    System.IO.File.Copy(path + @"\Sessions\archive\" + phone + ".dat", path + @"\Sessions\" + phone + ".dat");

    telegram = new ParseTelegram(Convert.ToInt32(clientId), clientHash, phone);

В чем может быть проблема?

Почему после нескольких часов успешной работы может появлятся такая ошибка ?

Спасибо!


Ответы (0 шт):