Хорошая ли идея запускать бесконечные асинхронные методы?

Есть некий класс с парсером поисковой системы.

public class Duckduckgo
{
     public async Task GetSnippetHttpClientAsync(CancellationToken token, SQLiteKeyRepository repository, int timeout, int pause)
    {
        while (!token.IsCancellationRequested)
        {

            var result = await ParseHttpAsync(repository, token, timeout, pause);
        }

    }

     private async Task<string> ParseHttpAsync(SQLiteKeyRepository repository, CancellationToken token, int timeout, int pause)
    {

        while (!token.IsCancellationRequested)
        {
          //тут логика парсера, если что то случается то проццес начинается с начала.
        }
        return null;

    }



}

Запуск происходит вот так

 for (int i = 0; i < parseduckhttp; i++)
    {
     Duckduckgo h = new Duckduckgo();
     h.GetSnippetHttpClientAsync(token, repositoryKey, timeouthttp, pausehttp);                           
    }

Методы выполняются пока я не сделаю cancelTokenSource.Cancel();
И вот вопрос это вообще нормально выполнять такие теоретический бесконечные методы?
Можно было конечно для каждой задачи создавать свой объект и в нем 1 раз запускать метод, но я подумал что это сильно скажется на производительности, ведь объектов может быть и 300 чаще всего выполнение метода будет заканчиваться ошибкой и бОльшая часть времени будет уходить на создание новых объектов а не на полезную работу.


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