Unreal
언리얼 엔진에서 비동기 작업을 수행하고 콜백 받기
by myroad
2023. 8. 18.
//this을 사용하면 AnyncTask함수을 호출하는 객체의 함수도 태스크 안에서 그대로 사용할 수 있다.
void AMyAsyncTask::RunTask(FTaskCallbackDelegate CallbackDel)
{
UE_LOG(LogTemp, Log, TEXT("AMyAsyncTask::RunTask_111"));
int32 NumCount = 100;
AsyncTask(ENamedThreads::AnyHiPriThreadNormalTask, [this, NumCount, CallbackDel]()
{
UE_LOG(LogTemp, Log, TEXT("AMyAsyncTask::RunTask_222"));
UE_LOG(LogTemp, Log, TEXT("%d"), NumCount);
UpdateTask();
CallbackDel.ExecuteIfBound();
UE_LOG(LogTemp, Log, TEXT("AMyAsyncTask::RunTask_333"));
});
UE_LOG(LogTemp, Log, TEXT("AMyAsyncTask::RunTask_444"));
}
void AMyAsyncTask::UpdateTask()
{
UE_LOG(LogTemp, Log, TEXT("AMyAsyncTask::UpdateTask"));
for (int ii = 0; ii < 10; ++ii)
{
FString Str = FString::Printf(TEXT("%d"), ii);
GEngine->AddOnScreenDebugMessage(101, 1.0f, FColor::Green, Str, true, FVector2D(2.0, 2.0));
FPlatformProcess::Sleep(1.0f);
}
}