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);
В чем может быть проблема?
Почему после нескольких часов успешной работы может появлятся такая ошибка ?
Спасибо!