Не легче ли внедрение делать через конструкторы?
роде как контекст это класс который делает возможным работать с бд и сущностями внутри него, а его параметры это информация для того чтобы к этой бд подключиться.
Зачем завершать процесс генерируя ошибку(token.ThrowIfCancellationRequested())?
Result
классы с шаблонными Cancelled
.Вот есть способ завершать задачу return-ном в методе задачи.
try-catch ресурса затратная конструкция
Используйте параметр , mode чтобы указать, должна ли сборка мусора происходить немедленно или только при оптимальном времени для освобождения объектов. Использование этого метода не гарантирует, что вся недоступная память в указанном поколении будет освобождена.
Чтобы настроить навязчивость сборки мусора в критические периоды в приложении, задайте LatencyMode свойство .
Сборщик мусора не собирает объекты с номером поколения, превышающим указанное параметром generation . Используйте свойство , MaxGeneration чтобы определить максимально допустимое generationзначение .
Чтобы сборщик мусора учитывал все объекты независимо от их создания, используйте версию этого метода, которая не принимает параметров.
Чтобы сборщик мусора отнимает объекты до указанного поколения объектов, используйте перегрузку GC.Collect(Int32) метода . При указании максимального поколения собираются все объекты.
namespace ConsoleApp;
public delegate int Factory();
// Type: ConsoleApp.Factory
// Assembly: ConsoleApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 158825C2-2E1C-449E-A72A-66768D48C2ED
// Location: /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.dll
// Sequence point data and variable names from /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.pdb
.class public sealed auto ansi
ConsoleApp.Factory
extends [System.Runtime]System.MulticastDelegate
{
.method public hidebysig specialname rtspecialname instance void
.ctor(
object 'object',
native int 'method'
) runtime managed
{
// Can't find a body
} // end of method Factory::.ctor
.method public hidebysig virtual newslot instance int32
Invoke() runtime managed
{
// Can't find a body
} // end of method Factory::Invoke
.method public hidebysig virtual newslot instance class [System.Runtime]System.IAsyncResult
BeginInvoke(
class [System.Runtime]System.AsyncCallback callback,
object 'object'
) runtime managed
{
// Can't find a body
} // end of method Factory::BeginInvoke
.method public hidebysig virtual newslot instance int32
EndInvoke(
class [System.Runtime]System.IAsyncResult result
) runtime managed
{
// Can't find a body
} // end of method Factory::EndInvoke
} // end of class ConsoleApp.Factory
if (oldCount != count)
никогда не заходит внутрь т.к. этот код блокирует обработку кадров. Чтобы кадры продолжили обрабатываться надо в цикле использовать yield. Заодно можно заменить это ожидание циклом на корутину от юнити: yield return new WaitForSeconds(5);