Causes the <code>run()</code> method of the runnable to
be invoked by the user-interface thread at the next
reasonable opportunity. The thread which calls this method
is suspended until the runnable completes. Specifying <code>null</code>
as the runnable simply wakes the user-interface thread.
<p>
Note that at the time the runnable is invoked, widgets
that have the receiver as their display may have been
disposed. Therefore, it is necessary to check for this
case inside the runnable before accessing the widget.
</p>
@param runnable code to run on the user-interface thread or <code>null</code>
@exception SWTException <ul>
<li>ERROR_FAILED_EXEC - if an exception occurred when executing the runnable</li>
<li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
</ul>
Causes the <code>run()</code> method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. The thread which calls this method is suspended until the runnable completes. Specifying <code>null</code> as the runnable simply wakes the user-interface thread. <p> Note that at the time the runnable is invoked, widgets that have the receiver as their display may have been disposed. Therefore, it is necessary to check for this case inside the runnable before accessing the widget. </p>
@param runnable code to run on the user-interface thread or <code>null</code>
@exception SWTException <ul> <li>ERROR_FAILED_EXEC - if an exception occurred when executing the runnable</li> <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li> </ul>
@see #asyncExec