Мой оригинальный метод выглядит так:
string DoSomeWork();
Метод DoSomeWork
запускает некоторую работу над другим потоком и возвращает идентификатор выполнения (только случайная строка). Позже я могу запросить результаты с помощью идентификатора выполнения. Главное - сделать идентификатор выполнения доступным до завершения задания.
Теперь я хочу изменить подпись, чтобы вернуть задачу, поэтому пользователь может подождать, если захочет.
Task DoSomeWork();
В то же время мне все равно нужно вернуть идентификатор выполнения (например, для целей трассировки), и я вижу несколько вариантов. Сначала, если параметр out
, второй - вернуть кортеж как с идентификатором выполнения, так и с задачей (в С# это выглядит не лучшим вариантом) и третьим, о котором я действительно хочу спросить.
Что делать, если я создам класс, который будет получен из класса Task
:
public class ExtendedTask : Task
{
public string ExecutionID {get; set;}
}
Это выглядит нормально? Или лучше решить другие варианты?
P.S. В BCL есть некоторые производные от классов Task.
UPDATE, похоже, я не смог определить этот ясный enouthg. Но мне нужно получить доступ к ExecutionID до завершения задания, поэтому я не могу использовать Task.Result
.