Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, RushDevion, Вы писали:
RD>> public Task<T> GetValueAsync()
RD>> {
RD>> // Ошибка инициализации? Сбросим текущую таску в null, чтобы перезапуститься при след. обращении
RD>> task.ContinueWith(_ =>
RD>> Interlocked.CompareExchange(ref m_Value, null, task),
RD>> TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
RD>> return task;
RD>> }
S>А тут rc не будет случаем? Может continuation прицепить к родителю (task)?
Так оно и цепляется к task

Я возможностей для rc не вижу.
Но тут может быть множественная инициализация.
Если два и более потоков придут одновременно, то каждый из них запустит инициализацию.
Но востребованной будет только одна. Невостребованные либо тихо умрут, либо (худший случай) зафейлятся и улетят в Unobseved Task Exception handler.
Я же сказал, что это идея, а не production code