C# лучший способ использовать sql соединение в asyn c задании - PullRequest
0 голосов
/ 11 марта 2020

net основной веб-API-проект. Я обычно использую журналы в каждом приложении, чтобы иметь некоторые дополнительные возможности отслеживания общего состояния системы. В настоящее время моя «запись в журнал» происходит синхронно, например

void MyMethod()
{
   Log.Write("initiating");
   //Do Something
   Log.Write("finished");
}

Теперь Log.Write () будет потреблять время в основном потоке, так как это, в конце концов, вставка sql. Как я могу сделать Log.Write как асинхронным (стиль Task.Run, для которого мне не нужно возвращаемое значение, так что не нужно ждать) И разрешить свое собственное sql соединение? Если Log.Write () использует то же соединение, которое имеет мой контроллер / метод, оно будет удалено после основного выполнения, и я рискую не иметь открытого соединения при запуске задачи asyn c. Поэтому Write () должен разрешать свое собственное соединение, и это метод, который можно вызывать сотни, если не тысячи раз в минуту.

Спасибо!

1 Ответ

0 голосов
/ 11 марта 2020

Microsoft сама заявляет, что асинхронные c методы ведения журнала не должны быть необходимыми, поскольку не следует вести журнал в медленном хранилище:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging#no -asynchronous-logger-Methods

...