If you look at the intellisense or on MSDN, Thread.Sleep() takes an argument that is the value of time to "sleep" the thread in milliseconds.
To have your code wait 5 seconds before showing the messagebox, try:
Thread.Sleep(5000);
MessageBox.Show(abc);
You will need to include:
using System.Threading;
in your namespaces, otherwise use the fully qualified path to the method:
System.Threading.Thread.Sleep(5000);
Well, if for some bizarre reason your thread.sleep() isn't working (I'd REALLY want to figure this one out because it means there's something else happening - likely you have another thread re-entering some method) you can always try this:
var waitTime = new TimeSpan(0, 0, 5);
var waitUntil = DateTime.Now + waitTime;
while(DateTime.Now <= waitUntil)
{
System.Threading.Thread.Sleep(1000);
}
MessageBox.Show(abc);
If that still doesn't work, you have OTHER problems either in code or within your system.