the task
does not maintain wait handle performance reasons, , lazily constructs 1 if code ask 1 of it.
how task
know has been completed?
one argue implementer sets result on taskcompletionsource
in implementation explain modern implementations , re-writes such system.io.filestream.begin/endreadtask
.
i followed task.iscomplete
property; in every instance, internal bitwise flag field (m_stateflags
) set trysetresult / trysetexception
methods indicate status of task.
but not cover cases.
what method such this?
public async task fooasync() { await task.run(() => { }); }
how task know has been completed?
as describe on blog (overview, more detail), there 2 kinds of tasks: delegate tasks (which execute code) , promise tasks (which represent event).
delegate tasks complete when delegate completes.
promise tasks completed external signal, using taskcompletionsource<t>
(or equivalent methods internal bcl).