Thank you for writing.
When you debug the application you should notice that the call to our RadMessageBox.Show() method returns immediately, while Microsoft's message box blocks the UI thread. This is why the standard message box is shown before your data is generated and ours shows after it is generated. In other words, the MessageBox.Show() method is snychronous, while RadMessageBox.Show() is asynchronous.
RadMessageBox is implemented asynchronously because there is no other way to implement it in Silverlight. In order for the Show method to block the UI thread we need low level native APIs that allow the installation of a modal message loop, however these APIs are not available to developers.
What you have to do, is to show RadMessageBox initially. Then, in the message box closed, callback you generate your data. Now after your data is generated, you show the second message box.
this.Loaded += (s, a) =>
RadMessageBox.Show("Title", closedHandler: (args) =>
// generate data.
this.Dispatcher.BeginInvoke(() => RadMessageBox.Show("Second message box"));
Please write again if you have other questions.
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>