5#include "../Unity/MTCoroutineStarter.hpp"
7#include <custom-types/shared/coroutine.hpp>
9#include <System/Threading/Tasks/Task_1.hpp>
10#include <System/Threading/Tasks/TaskStatus.hpp>
16 using namespace System::Threading;
17 using namespace System::Threading::Tasks;
24 template<
typename t_Result>
38 template<
typename t_Result>
46 if (!p_Task || p_Task->get_IsCanceled())
48 p_Callback(p_Task,
false);
52 auto l_Status = p_Task->get_Status();
53 if (l_Status == _u::TaskStatus::Faulted || l_Status == _u::TaskStatus::Canceled)
55 p_Callback(p_Task,
false);
59 if (l_Status == _u::TaskStatus::RanToCompletion)
65 p_Callback(p_Task,
true);
static void EnqueueFromThread(_u::IEnumerator *p_Coroutine)
Enqueue a new coroutine from thread.
Various platform utils like Delegate/Action/Function/Event system.
static void AwaitTaskAsync(_u::Task_1< t_Result > *p_Task, CActionRef< MonoPtrRef< _u::Task_1< t_Result > >, bool > p_Callback)
Await a task using a coroutine on the main thread.
custom_types::Helpers::Coroutine Coroutine_AwaitTaskAsync(MonoPtr< _u::Task_1< t_Result > > p_Task, Action< MonoPtrRef< _u::Task_1< t_Result > >, bool > p_Callback)
Await a task using coroutine.