Я создал простую форму, которая загружает CSV-файл с несколькими столбцами, такими как электронная почта, имя, город, и я пытаюсь отправлять им ежедневные обновления через 2 сервера SMTP, которые у меня есть. Я думал использовать фонового работника, потому что это возможности прогресса (для моей прогрессивной панели), но я также читал на этом сайте, что есть другие альтернативы, такие как задача, поток или пул потоков.
Я также читал, что отправка электронных писем должна выполняться асинхронным методом. Я не знаю, возможно ли это или оптимизировано для производительности, но я пытаюсь сделать следующее:
для каждого smtp я хочу использовать поток для чтения, скажем, 10 строк из файла CSV,
разделите строку по полям и отправьте информацию в другой поток, который будет отправлять сообщение на каждое письмо в этом небольшом списке. Я хочу сделать это, чтобы сэкономить драгоценное время для каждой процедуры аутентификации SMTP.
Поскольку для подключения к smtp для каждого сообщения электронной почты каждый раз требуется вся процедура сокета, например HELO, AUTH, DATA. Если я собираюсь отправить список электронной почты, я могу оставить сокет открытым после авторизации и изменить только данные, которые я отправляю. 10 строк это просто переменная, которая может быть изменена пользователем.
Итак, 2 задачи для каждого smtp, значит всего 4 или могут быть увеличены в зависимости от количества smtps, которое я буду использовать.
Могу ли я использовать дополнительные темы для каждой задачи или фонового работника?
Я немного растерялся, потому что я новичок в c #, и я не нашел ни одного примера по этому поводу. Прошло больше недели с тех пор, как я пытаюсь понять, как работает фоновый рабочий / потоки, но все еще безуспешно. Любая помощь будет признательна, и любая идея лучше, чем моя, чтобы улучшить производительность Спасибо!