Hello,
I´ve been trying to implement an FRunnable Thread that calls an Event (BlueprintImplementableEvent).
In a blank C++ project where I have implemented the plugin, this works (rather stable, with the help of appropriately timed sleep commands).
Today I tried to include this plugin functionality in a VehicleExample project, and here it was very unstable. The exception I get is the following:
UE4Editor_CoreUObject!TArray<FScriptTraceStackNode,FDefaultAllocator>::Emplace<FScriptTraceStackNode const & __ptr64>() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\containers\array.h:1735]
UE4Editor_CoreUObject!FFrame::FFrame() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\public\uobject\stack.h:192]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:985]
UE4Editor_Engine!AActor::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580]
UE4Editor_RudiPlugin!ARudiEvents::RowerEventIntensity() [c:\users\mf\documents\unreal projects\myproject12\plugins\rudiplugin\intermediate\build\win64\ue4editor\inc\rudiplugin\rudiplugin.generated.cpp:50]
UE4Editor_RudiPlugin!FRudiThread::Run() [c:\users\mf\documents\unreal projects\myproject12\plugins\rudiplugin\source\rudiplugin\private\rudithread.cpp:124]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:74]
When I try to debug in the blueprint graph, I get another exception:
Unknown exception - code 00000001 (first/second chance not available)
"Assertion failed: IsThreadSafeForSlateRendering() [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.10\Engine\Source\Runtime\SlateCore\Public\Application\SlateApplic
UE4Editor_Core!FDebug::AssertFailed() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\misc\outputdevice.cpp:374]
UE4Editor_SlateCore!FSlateApplicationBase::Get() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slatecore\public\application\slateapplicationbase.h:390]
UE4Editor_SlateCore!SWidget::RegisterActiveTimer() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slatecore\private\widgets\swidget.cpp:751]
UE4Editor_SlateCore!FCurveSequence::RegisterActiveTimerIfNeeded() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slatecore\private\animation\curvesequence.cpp:265]
UE4Editor_SlateCore!FCurveSequence::Play() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slatecore\private\animation\curvesequence.cpp:75]
UE4Editor_Slate!SDockTab::FlashTab() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\widgets\docking\sdocktab.cpp:406]
UE4Editor_Slate!FTabManager::DrawAttention() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\docking abmanager.cpp:864]
UE4Editor_Slate!FGlobalTabmanager::DrawAttentionToTabManager() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\docking abmanager.cpp:1685]
UE4Editor_UnrealEd!SStandaloneAssetEditorToolkitHost::BringToFront() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private oolkits\sstandaloneasseteditortoolkithost.cpp:222]
UE4Editor_UnrealEd!FBaseToolkit::BringToolkitToFront() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private oolkits\basetoolkit.cpp:127]
UE4Editor_UnrealEd!FAssetEditorManager::FindEditorForAsset() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private oolkits\asseteditormanager.cpp:108]
UE4Editor_UnrealEd!FAssetEditorManager::OpenEditorForAsset() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private oolkits\asseteditormanager.cpp:261]
UE4Editor_UnrealEd!FKismetEditorUtilities::GetIBlueprintEditorForObject() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\kismet2\kismet2.cpp:1692]
UE4Editor_UnrealEd!FKismetEditorUtilities::BringKismetToFocusAttentionOnObject() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\kismet2\kismet2.cpp:1747]
UE4Editor_UnrealEd!FKismetDebugUtilities::AttemptToBreakExecution() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\kismet2\kismetdebugutilities.cpp:477]
UE4Editor_UnrealEd!FKismetDebugUtilities::OnScriptException() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\kismet2\kismetdebugutilities.cpp:266]
UE4Editor_UnrealEd!TBaseStaticDelegateInstance<void __cdecl(UObject const * __ptr64,FFrame const & __ptr64,FBlueprintExceptionInfo const & __ptr64)>::ExecuteIfSafe() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:921]
UE4Editor_CoreUObject!TBaseMulticastDelegate<void,UObject const * __ptr64,FFrame const & __ptr64,FBlueprintExceptionInfo const & __ptr64>::Broadcast() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:809]
UE4Editor_CoreUObject!UObject::execBreakpoint() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1287]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:608]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1842]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1053]
UE4Editor_Engine!AActor::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580]
UE4Editor_RudiPlugin!ARudiEvents::RowerEventIntensity() [c:\users\mf\documents\unreal projects\myproject12\plugins\rudiplugin\intermediate\build\win64\ue4editor\inc\rudiplugin\rudiplugin.generated.cpp:50]
UE4Editor_RudiPlugin!FRudiThread::Run() [c:\users\mf\documents\unreal projects\myproject12\plugins\rudiplugin\source\rudiplugin\private\rudithread.cpp:124]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:74]
What would be a safe approach to call a Blueprint Event from inside a running Thread (currently I pass the Blueprint Actor into the FThread class and raise the event from inside the Run method)?