Это код, где я инициализирую свой пользовательский регистратор, способ, которым он работает, заключается в том, что я создаю экземпляр класса frmLog в MainForm, и this, который является экземпляром frmlog, создает экземпляр регистратора. В логгере нет ничего особенного, он работает с очередью с сервера, которую я копирую, пока блокирую, а затем выкидываю очередь в текстовый файл. То, что потерпело неудачу, было процессом очереди, но я не хочу рисковать.
Я ожидаю, что произойдет с этим кодом: : Каждый раз, когда в логгере возникает проблема, которая заставляет его генерировать исключение, которое не обрабатывается, перехватить его здесь и перезапустить. Будет ли это работать как задумано?
Server Server;
LogHelper logger;
int counter = 0;
public frmLog(Server server)
{
InitializeComponent();
Server = server;
}
void inicializarlog()
{
logger = new LogHelper(rtbLog, Server, this);
}
private void btnSalirLog_Click(object sender, EventArgs e)
{
this.Hide();
}
private void frmLog_Load(object sender, EventArgs e)
{
MainAsync();
}
private async Task MainAsync()
{
try
{
await Task.Factory.StartNew(() => inicializarlog());
}
catch (Exception ex)
{
Console.WriteLine("Fallo el asincronico: " + ex.Message);
if(counter++ >= 5)
MainAsync();
else
Console.WriteLine("Fatal error, shutting down the logger");
}
}
Edit: повтор и библиотека polly, если работа не удалась, так как то, что я делаю, создает экземпляр регистратора, он всегда будет завершен, проблема после факта. если у меня нет проблем на сервере