I'm not sure if there is a "proper" way to do it, but I create a simple non-modal window with a "please wait" message which I close after the action has completed.
win_pls_wait = New Window( "Please wait",
<<Show Menu( 0 ),
<<Show Toolbars( 0 ),
Panel Box( "Working...", Lineup Box( N Col( 2 ), Busy Light( <<automatic, size( 40, 40 ) ), Text Box( "Running action..." ) ) )
);
// Open Database( ... )
// or other long action
Try( win_pls_wait << close window );
I guess there's always a risk of the "please wait" window getting left open if the long action causes an error, but for well tested processes it seems to work OK for me.