auto create_task()

in Source/Windows/arcana/threading/task_conversions.h [32:53]


        auto create_task(const AsyncInfoT& asyncInfo)
        {
            auto completionSource = arcana::task_completion_source<ResultT, ErrorT>{};

            asyncInfo.Completed([completionSource](const AsyncInfoT& sender, const winrt::Windows::Foundation::AsyncStatus status) mutable
            {
                if (status == winrt::Windows::Foundation::AsyncStatus::Completed)
                {
                    set_completion_source<ErrorT>(completionSource, sender);
                }
                else if (status == winrt::Windows::Foundation::AsyncStatus::Canceled)
                {
                    completionSource.complete(make_unexpected(std::make_error_code(std::errc::operation_canceled)));
                }
                else if (status == winrt::Windows::Foundation::AsyncStatus::Error)
                {
                    completionSource.complete(make_unexpected(arcana::error_code_from_hr(sender.ErrorCode())));
                }
            });

            return completionSource.as_task();
        }