A wait dialog indicates this is a long running process. Have you tried async await?
button.Click += async delegate
{
await Search_Click();
};
}
Task Search_Click()
{
return Task.Factory.StartNew (() =>
{
// here i'am trying to clear some ListView
// here i am trying to show ProgressDialog
var progress = new ProgressDialog (this);
progress.SetMessage ("Wait while loading...");
progress.Show ();
// but here i haven't ProgressDialog and clear ListView yet
progress.Dismiss();
});
}