Это нормально, чтобы получить из задачи TPL, чтобы вернуть больше деталей из метода?

Мой оригинальный метод выглядит так:

string DoSomeWork();

методDoSomeWork начинает некоторую работу в другом потоке и возвращает идентификатор выполнения (просто случайная строка). Позже я могу запросить результаты по заданному идентификатору выполнения. Главное, чтобы идентификатор выполнения был доступен до завершения задания.

Теперь я хочу изменить подпись, чтобы она возвращала Task, чтобы пользователь мог ждать, если захочет.

Task DoSomeWork();

В то же время мне все еще нужно вернуть идентификатор выполнения (например, для целей отслеживания), и я вижу несколько вариантов. Сначала еслиout параметр, второй, должен возвращать кортеж с идентификатором выполнения и задачей (в C # это выглядит не лучшим вариантом), и третий, о котором я действительно хочу спросить.

Что если я создам класс, который будет производным отTask класс:

public class ExtendedTask : Task
{
     public string ExecutionID {get; set;}
}

Это выглядит хорошо? Или лучше выбрать другие варианты?

Постскриптум В BCL есть некоторые производные от классов Task.

ОБНОВИТЬКажется, я не смог определить это ясно. Но мне нужен доступ к ExecutionID, прежде чем работа будет завершена, и поэтому я не могу использоватьTask.Result.

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

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