Control.invoke method
public Object invoke(Object delegate(Object[]) dg, Object[] args...)
Use Control.invoke() to execute a delegate in the thread that the Control was created in. The first parameter is the delegate to call in the other thread, the second parameter is the args to pass to that delegate, and the return value is what was returned from the delegate. See examples\invoke.d for example code.