プログレスバー系の更新が上手くいかないんだが・・・

処理の流れは�@ボタンをクリック �AThreadでダイアログプログレスバー表示・更新 �B検索関数起動 �Cプログレスバーの値追加
何だけど、検索ツールが終わってからじゃないとバーが可変しないんだ

for(検索回数が複数あるため、最後までループ) {
dig.show;
new Thread(new Runable() {
public void run() {
mHand.post(new Runable() {
public void run() {
pgBar.setSecondaryProgress(p);
dig.setProgress(p);
dig.dismiss();
} }); } }).start();
search(loopCnt); //検索プログラム
p = p + 20; //バー変動
}

希望してる動作は、ボタンをクリックしたらダイアログプログレスバーを表示、
検索ループが1回終わる毎に、バーを更新して0→20→40→60といった形になってほしい
だけど、実際の動作は、検索終了後に一気に100%

何が悪いのだろう?