Передача задачи в качестве параметра

Я не уверен, возможно ли это, поэтому здесь меня

У меня есть последовательность действий для выполнения нескольких

async Task MethodA(...)
{
    // some code
    // a call to specific Async IO bound method
    // some code
}

это такжеMethodB(), MethodC()и т. д., и все они имеют одинаковый код, за исключением вызова конкретного метода, связанного с асинхронным вводом-выводом. Я пытаюсь найти способ передать указатель задачи на метод, чтобы мы могли выполнить его позже в методе ().

Что я сейчас делаю, так это:

private async Task Method(Func<Task<Entity>> func)
{
    // some code
    var a = await task.Run(func);
    // some code
}

var task = async () => await CallToIOBoundTask(params);
Method(task);

Этот код, однако, каждый раз вытягивает новый поток, который не требуется для задачи, связанной с вводом-выводом, и его следует избегать.

Итак, есть ли способ реорганизовать код так, чтобы поток ThreadPool не использовался? Цель состоит в том, чтобы иметь такой код:

private async Task Method(Task<Entity> task)
{
    // some code
    var a = await task;
    // some code
}

Также важно отметить, что разные вызовы ввода-вывода имеют разные сигнатуры методов. Также задание может начать выполняться только вMethod() кузов, а не раньше.

Ответы на вопрос(1)

Ваш ответ на вопрос