I have a BlueprintAssignable dynamic multicast delegate created in C++, and called via C++ with Broadcast(). The Broadcast() function is called outside of the game thread.
If I assign a blueprint event to this delegate, and use a Create Widget node in this event, it will cause an assertion failure in Obj.cpp:925
check(IsInGameThread() || HasAnyFlags(RF_ClassDefaultObject|RF_ArchetypeObject) || IsPostLoadThreadSafe() || IsA(UClass::StaticClass()))
I solved it by wrapping the Broadcast() call in a GameThread task:
AsyncTask(ENamedThreads::GameThread, []() {});
This appears to be a bug to me, and caught me off guard. Shouldn’t the responders to a Broadcast be posting to the GameThread anyway?