5#include <system/object.h>
6#include <system/func.h>
7#include <system/threading/tasks/task.h>
9namespace System {
namespace Runtime {
namespace CompilerServices {
11class ResultTaskAwaiter;
13class ConfiguredResultTaskAwaitable;
16namespace Threading {
namespace Tasks {
61 auto result = MakeObject<Task>(
62 std::function<
void()>([continuationAction, task =
MakeSharedPtr(
this)] { continuationAction(task); }));
104namespace Runtime {
namespace CompilerServices {
115 return m_task->get_IsCompleted();
120 m_task->AddContinuation(continuation);
125 return m_task->get_Result();
139 : m_task(task), m_continueOnCapturedContext(continueOnCapturedContext)
144 auto result = m_task->GetAwaiter();
145 result.continueOnCapturedContext = m_continueOnCapturedContext;
151 bool m_continueOnCapturedContext;
Function delegate. This type should be allocated on stack and passed to functions by value or by refe...
Definition: func.h:82
Definition: result_task.h:108
T GetResult() const
Definition: result_task.h:123
ResultTaskAwaiter(const RTaskPtr< T > &task)
Definition: result_task.h:110
void OnCompleted(const Action<> &continuation)
Definition: result_task.h:118
bool continueOnCapturedContext
Definition: result_task.h:128
bool get_IsCompleted() const
Definition: result_task.h:113
A Task specialization that returns a result value upon completion.
Definition: result_task.h:24
Runtime::CompilerServices::ConfiguredResultTaskAwaitable< T > ConfigureAwait(bool continueOnCapturedContext) const
Configures how awaits on this result task should behave regarding context capture.
Definition: result_task.h:50
T get_Result()
Gets the result of the asynchronous operation.
Definition: result_task.h:40
TaskPtr ContinueWith(const Action< RTaskPtr< T > > &continuationAction)
Creates a continuation that executes when the result task completes.
Definition: result_task.h:59
ResultTask(const Func< T > &function)
Constructs a ResultTask with a function that returns a value.
Definition: result_task.h:31
ResultTask()
Internal implementation. Not for user code.
Definition: result_task.h:78
void set_Result(const T &result)
Sets the result value for the task.
Definition: result_task.h:83
Runtime::CompilerServices::ResultTaskAwaiter< T > GetAwaiter() const
Gets an awaiter for this result task for use with Await.
Definition: result_task.h:70
Represents an asynchronous operation that can be awaited and composed with other tasks.
Definition: task.h:27
void Wait()
Waits for the task to complete.
Task()
Internal constructor for creating uninitialized tasks.
void ContinueWithCore(const TaskPtr &continuationTask)
Internal implementation for adding continuations.
std::function< void()> FunctionT
Internal implementation. Not for user code.
Definition: task.h:118
Definition: db_command.h:9
MulticastDelegate< void(Args...)> Action
Delegate type that references methods that have no return value.
Definition: action.h:40
SmartPtr< X > MakeSharedPtr(X *p)
Converts raw pointer to smart pointer.
Definition: smart_ptr.h:1650