Почему вы не можете использовать второе решение?Это просто пирог, чтобы запустить метод в другой теме.Вам не нужно обрабатывать блокировки, условия гонки или другие проблемы с потоками.Это просто журнал только для добавления.И даже ничего не произойдет, если метод каким-то образом завершится сбоем (так что ничто не сможет отловить ошибку), потому что, опять же, это просто журнал.
См. Этот пример:
Thread t = new Thread(() =>
{
Logger log = new logger();
log.Log("...");
});
t.Start();
Но какпримечание, которое я рекомендую - не используйте SQL для этого.Используйте другие надежные и проверенные решения, такие как log4net , или используйте быструю основанную на памяти (с возможным сохранением диска) базу данных NoSQL, например Redis .