A queued message with a timeout would create a race condition anyway; it would be more robust if you do it like: 1) start your application B to receive the message 2) in application A, listen for the NameOwnerChanged signal when B receives its bus name 3) in application A, send your message to B Havoc