CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
System::Threading::Tasks::Task Class Reference

Represents an asynchronous operation that can be awaited and composed with other tasks. More...

#include <task.h>

Inherits System::IDisposable.

Inherited by System::Threading::Tasks::ResultTask< T >.

Public Types

using FunctionT = std::function< void()>
 Internal implementation. Not for user code. More...
 
- Public Types inherited from System::Object
typedef SmartPtr< Objectptr
 Alias for smart pointer type. More...
 

Public Member Functions

 Task (const Action<> &action)
 Constructs a Task with an action to execute. More...
 
 Task (const Action<> &action, const CancellationToken &cancellationToken)
 Constructs a Task with an action and cancellation token. More...
 
 Task (const Action< SharedPtr< Object > > &action, const SharedPtr< Object > &state)
 Constructs a Task with a stateful action and state object. More...
 
 Task (const Action< SharedPtr< Object > > &action, const SharedPtr< Object > &state, const CancellationToken &cancellationToken)
 Constructs a Task with stateful action, state, and cancellation token. More...
 
 ~Task ()
 Destructor. More...
 
bool get_IsCompleted () const
 Gets whether the task has completed. More...
 
bool get_IsCanceled () const
 Gets whether the task completed due to cancellation. More...
 
TaskStatus get_Status () const
 Gets the current status of the task. More...
 
AggregateException get_Exception () const
 Gets the ID for task. More...
 
int32_t get_Id () const
 
const SharedPtr< Object > & get_AsyncState () const
 Gets the user-defined state object associated with the task. More...
 
bool get_IsFaulted () const
 Gets whether the task completed due to an unhandled exception. More...
 
TaskPtr ContinueWith (const Action< TaskPtr > &continuationAction)
 Creates a continuation that executes when the task completes. More...
 
template<typename TResult >
RTaskPtr< TResult > ContinueWith (const Func< TaskPtr, TResult > &continuationFunction)
 Creates a continuation that executes when the task completes. More...
 
Runtime::CompilerServices::TaskAwaiter GetAwaiter () const
 Gets an awaiter for this task for use with Await. More...
 
Runtime::CompilerServices::ConfiguredTaskAwaitable ConfigureAwait (bool continueOnCapturedContext) const
 Configures how awaits on this task should behave regarding context capture. More...
 
void RunSynchronously ()
 Runs the task synchronously on the current thread. More...
 
void RunSynchronously (const SharedPtr< TaskScheduler > &scheduler)
 Runs the task synchronously using the specified scheduler. More...
 
void Start ()
 Starts the task execution using the default scheduler. More...
 
void Start (const SharedPtr< TaskScheduler > &scheduler)
 Starts the task execution using the specified scheduler. More...
 
void Wait (const CancellationToken &cancellationToken)
 Waits for the task to complete with cancellation support. More...
 
void Wait ()
 Waits for the task to complete. More...
 
void Dispose () override
 Releases resources associated with the task. More...
 
 Task ()
 Internal constructor for creating uninitialized tasks. More...
 
void set_Function (const FunctionT &fnc)
 Sets the internal function to execute. More...
 
void set_Status (TaskStatus status)
 Sets the task status. More...
 
const SharedPtr< TaskScheduler > & get_Scheduler () const
 Gets the scheduler associated with this task. More...
 
void set_Scheduler (const SharedPtr< TaskScheduler > &scheduler)
 Sets the scheduler associated with this task. More...
 
void Activate (const SharedPtr< TaskScheduler > &scheduler=nullptr)
 Activates the task for execution on a scheduler. More...
 
void Execute ()
 Executes the task's function. More...
 
void AddCompletionAction (const Action<> &continuation)
 Adds a continuation action to be executed upon completion. More...
 
void Complete ()
 Marks the task as completed and finishes task. More...
 
void Cancel ()
 Marks the task as cancelled and finishes task. More...
 
virtual void Dispose ()
 Does nothing. More...
 
- Public Member Functions inherited from System::Object
 Object ()
 Creates object. Initializes all internal data structures. More...
 
virtual ~Object ()
 Destroys object. Frees all internal data structures. More...
 
 Object (Object const &x)
 Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
Objectoperator= (Object const &x)
 Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
ObjectSharedRefAdded ()
 Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int SharedRefRemovedSafe ()
 Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int RemovedSharedRefs (int count)
 Decreases shared reference count by specified value. More...
 
Detail::SmartPtrCounter * WeakRefAdded ()
 Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
void WeakRefRemoved ()
 Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
Detail::SmartPtrCounter * GetCounter ()
 Gets reference counter data structure associated with the object. More...
 
int SharedCount () const
 Gets current value of shared reference counter. More...
 
void Lock ()
 Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
 
void Unlock ()
 Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
 
virtual bool Equals (ptr obj)
 Compares objects using C# Object.Equals semantics. More...
 
virtual int32_t GetHashCode () const
 Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
 
virtual String ToString () const
 Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
 
virtual ptr MemberwiseClone () const
 Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
 
virtual const TypeInfoGetType () const
 Gets actual type of object. Analog of C# System.Object.GetType() call. More...
 
virtual bool Is (const TypeInfo &targetType) const
 Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More...
 
virtual void SetTemplateWeakPtr (uint32_t argument)
 Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More...
 
virtual bool FastCast (const Details::FastRttiBase &helper, void **out_ptr) const
 For internal purposes only. More...
 
template<>
bool ReferenceEquals (String const &str, std::nullptr_t)
 Specialization of Object::ReferenceEquals for case of string and nullptr. More...
 
template<>
bool ReferenceEquals (String const &str1, String const &str2)
 Specialization of Object::ReferenceEquals for case of strings. More...
 

Static Public Member Functions

static Nullable< int32_t > get_CurrentId ()
 
static const TaskPtrget_CompletedTask ()
 Gets a completed task (singleton) More...
 
- Static Public Member Functions inherited from System::Object
static bool ReferenceEquals (ptr const &objA, ptr const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, T const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, std::nullptr_t)
 Reference-compares value type object with nullptr. More...
 
template<typename T1 , typename T2 >
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares reference type objects in C# style. More...
 
template<typename T1 , typename T2 >
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares value type objects in C# style. More...
 
static const TypeInfoType ()
 Implements C# typeof(System.Object) construct. More...
 
template<>
bool Equals (float const &objA, float const &objB)
 Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. More...
 
template<>
bool Equals (double const &objA, double const &objB)
 Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. More...
 

Protected Member Functions

void ContinueWithCore (const TaskPtr &continuationTask)
 Internal implementation for adding continuations. More...
 
void ExecuteContinuations ()
 Executes all registered continuations. More...
 
virtual void Finish ()
 Finalizes task completion and executes continuations. More...
 

Protected Attributes

int32_t m_id
 
FunctionT m_function
 The function to execute. More...
 
TaskStatus m_status
 Current execution status. More...
 
std::exception_ptr m_exception
 Captured exception if the task faulted. More...
 
CancellationToken m_cancellation_token
 Cancellation token for the task. More...
 
SharedPtr< TaskSchedulerm_scheduler
 Scheduler responsible for executing the task. More...
 
SharedPtr< Objectm_state
 User-defined state object. More...
 
std::list< Action<> > m_completions
 List of continuation tasks to execute after completion. More...
 
std::mutex m_completions_mutex
 Mutex protecting continuations operations. More...
 

Static Protected Attributes

static std::atomic< int32_t > m_next_id
 ID of next task will be created. More...
 

Detailed Description

Represents an asynchronous operation that can be awaited and composed with other tasks.

Provides a C++ implementation similar to System.Threading.Tasks.Task in .NET, supporting cancellation, continuations, and async/await patterns

Member Typedef Documentation

◆ FunctionT

using System::Threading::Tasks::Task::FunctionT = std::function<void()>

Internal implementation. Not for user code.

Function type for internal task execution

Constructor & Destructor Documentation

◆ Task() [1/5]

System::Threading::Tasks::Task::Task ( const Action<> &  action)

Constructs a Task with an action to execute.

Parameters
actionThe action to execute asynchronously

◆ Task() [2/5]

System::Threading::Tasks::Task::Task ( const Action<> &  action,
const CancellationToken cancellationToken 
)

Constructs a Task with an action and cancellation token.

Parameters
actionThe action to execute asynchronously
cancellationTokenToken to monitor for cancellation requests

◆ Task() [3/5]

System::Threading::Tasks::Task::Task ( const Action< SharedPtr< Object > > &  action,
const SharedPtr< Object > &  state 
)

Constructs a Task with a stateful action and state object.

Parameters
actionThe action to execute (accepts state object)
stateUser-defined state object passed to the action

◆ Task() [4/5]

System::Threading::Tasks::Task::Task ( const Action< SharedPtr< Object > > &  action,
const SharedPtr< Object > &  state,
const CancellationToken cancellationToken 
)

Constructs a Task with stateful action, state, and cancellation token.

Parameters
actionThe action to execute (accepts state object)
stateUser-defined state object passed to the action
cancellationTokenToken to monitor for cancellation requests

◆ ~Task()

System::Threading::Tasks::Task::~Task ( )

Destructor.

◆ Task() [5/5]

System::Threading::Tasks::Task::Task ( )

Internal constructor for creating uninitialized tasks.

Member Function Documentation

◆ Activate()

void System::Threading::Tasks::Task::Activate ( const SharedPtr< TaskScheduler > &  scheduler = nullptr)

Activates the task for execution on a scheduler.

◆ AddCompletionAction()

void System::Threading::Tasks::Task::AddCompletionAction ( const Action<> &  continuation)

Adds a continuation action to be executed upon completion.

◆ Cancel()

void System::Threading::Tasks::Task::Cancel ( )

Marks the task as cancelled and finishes task.

◆ Complete()

void System::Threading::Tasks::Task::Complete ( )

Marks the task as completed and finishes task.

◆ ConfigureAwait()

Runtime::CompilerServices::ConfiguredTaskAwaitable System::Threading::Tasks::Task::ConfigureAwait ( bool  continueOnCapturedContext) const

Configures how awaits on this task should behave regarding context capture.

Parameters
continueOnCapturedContextWhether to continue on the captured context
Returns
Runtime::CompilerServices::ConfiguredTaskAwaitable A configured awaitable

◆ ContinueWith() [1/2]

TaskPtr System::Threading::Tasks::Task::ContinueWith ( const Action< TaskPtr > &  continuationAction)

Creates a continuation that executes when the task completes.

Parameters
continuationActionAction to execute when this task completes
Returns
TaskPtr A new task representing the continuation

◆ ContinueWith() [2/2]

template<typename TResult >
RTaskPtr< TResult > System::Threading::Tasks::Task::ContinueWith ( const Func< TaskPtr, TResult > &  continuationFunction)

Creates a continuation that executes when the task completes.

Template Parameters
TResultA type of task result
Parameters
continuationFunctionFunction to get result when this task completes
Returns
RTaskPtr A new task representing the continuation

◆ ContinueWithCore()

void System::Threading::Tasks::Task::ContinueWithCore ( const TaskPtr continuationTask)
protected

Internal implementation for adding continuations.

◆ Dispose()

void System::Threading::Tasks::Task::Dispose ( )
overridevirtual

Releases resources associated with the task.

Reimplemented from System::IDisposable.

◆ Execute()

void System::Threading::Tasks::Task::Execute ( )

Executes the task's function.

◆ ExecuteContinuations()

void System::Threading::Tasks::Task::ExecuteContinuations ( )
protected

Executes all registered continuations.

◆ Finish()

virtual void System::Threading::Tasks::Task::Finish ( )
protectedvirtual

Finalizes task completion and executes continuations.

◆ get_AsyncState()

const SharedPtr< Object > & System::Threading::Tasks::Task::get_AsyncState ( ) const
inline

Gets the user-defined state object associated with the task.

Returns
SharedPtr<Object> The state object provided during construction

◆ get_CompletedTask()

static const TaskPtr & System::Threading::Tasks::Task::get_CompletedTask ( )
static

Gets a completed task (singleton)

Returns
TaskPtr Shared pointer to a completed task instance

◆ get_CurrentId()

static Nullable< int32_t > System::Threading::Tasks::Task::get_CurrentId ( )
static

◆ get_Exception()

AggregateException System::Threading::Tasks::Task::get_Exception ( ) const

Gets the ID for task.

Returns
int32_t The unique ID for this task

◆ get_Id()

int32_t System::Threading::Tasks::Task::get_Id ( ) const
inline

◆ get_IsCanceled()

bool System::Threading::Tasks::Task::get_IsCanceled ( ) const
inline

Gets whether the task completed due to cancellation.

Returns
bool True if the task was canceled

◆ get_IsCompleted()

bool System::Threading::Tasks::Task::get_IsCompleted ( ) const

Gets whether the task has completed.

Returns
bool True if the task has completed (successfully, faulted, or canceled)

◆ get_IsFaulted()

bool System::Threading::Tasks::Task::get_IsFaulted ( ) const
inline

Gets whether the task completed due to an unhandled exception.

Returns
bool True if the task faulted

◆ get_Scheduler()

const SharedPtr< TaskScheduler > & System::Threading::Tasks::Task::get_Scheduler ( ) const
inline

Gets the scheduler associated with this task.

◆ get_Status()

TaskStatus System::Threading::Tasks::Task::get_Status ( ) const
inline

Gets the current status of the task.

Returns
TaskStatus The current execution status

◆ GetAwaiter()

Runtime::CompilerServices::TaskAwaiter System::Threading::Tasks::Task::GetAwaiter ( ) const

Gets an awaiter for this task for use with Await.

Returns
Runtime::CompilerServices::TaskAwaiter An awaiter instance

◆ RunSynchronously() [1/2]

void System::Threading::Tasks::Task::RunSynchronously ( )

Runs the task synchronously on the current thread.

Exceptions
Ifthe task has already been started or completed

◆ RunSynchronously() [2/2]

void System::Threading::Tasks::Task::RunSynchronously ( const SharedPtr< TaskScheduler > &  scheduler)

Runs the task synchronously using the specified scheduler.

Parameters
schedulerThe scheduler to use for execution
Exceptions
Ifthe task has already been started or completed

◆ set_Function()

void System::Threading::Tasks::Task::set_Function ( const FunctionT fnc)
inline

Sets the internal function to execute.

◆ set_Scheduler()

void System::Threading::Tasks::Task::set_Scheduler ( const SharedPtr< TaskScheduler > &  scheduler)
inline

Sets the scheduler associated with this task.

◆ set_Status()

void System::Threading::Tasks::Task::set_Status ( TaskStatus  status)

Sets the task status.

◆ Start() [1/2]

void System::Threading::Tasks::Task::Start ( )

Starts the task execution using the default scheduler.

Exceptions
Ifthe task has already been started

◆ Start() [2/2]

void System::Threading::Tasks::Task::Start ( const SharedPtr< TaskScheduler > &  scheduler)

Starts the task execution using the specified scheduler.

Parameters
schedulerThe scheduler to use for execution
Exceptions
Ifthe task has already been started

◆ Wait() [1/2]

void System::Threading::Tasks::Task::Wait ( )

Waits for the task to complete.

Exceptions
ExceptionIf the task faults

◆ Wait() [2/2]

void System::Threading::Tasks::Task::Wait ( const CancellationToken cancellationToken)

Waits for the task to complete with cancellation support.

Parameters
cancellationTokenToken to monitor for cancellation while waiting
Exceptions
OperationCanceledExceptionIf the wait is canceled
ExceptionIf the task faults

Member Data Documentation

◆ m_cancellation_token

CancellationToken System::Threading::Tasks::Task::m_cancellation_token
protected

Cancellation token for the task.

◆ m_completions

std::list<Action<> > System::Threading::Tasks::Task::m_completions
protected

List of continuation tasks to execute after completion.

◆ m_completions_mutex

std::mutex System::Threading::Tasks::Task::m_completions_mutex
protected

Mutex protecting continuations operations.

◆ m_exception

std::exception_ptr System::Threading::Tasks::Task::m_exception
protected

Captured exception if the task faulted.

◆ m_function

FunctionT System::Threading::Tasks::Task::m_function
protected

The function to execute.

◆ m_id

int32_t System::Threading::Tasks::Task::m_id
protected

◆ m_next_id

std::atomic<int32_t> System::Threading::Tasks::Task::m_next_id
staticprotected

ID of next task will be created.

◆ m_scheduler

SharedPtr<TaskScheduler> System::Threading::Tasks::Task::m_scheduler
protected

Scheduler responsible for executing the task.

◆ m_state

SharedPtr<Object> System::Threading::Tasks::Task::m_state
protected

User-defined state object.

◆ m_status

TaskStatus System::Threading::Tasks::Task::m_status
protected

Current execution status.