C#というか.NETというかWindowsの問題かもしれませんが、スレッドのプライオリティってちゃんと働いてます?
たしかNTの実装はひとつでも上位のプライオリティを持つ稼動スレッドがあったら下位のスレッドは永遠に待たされるってはずだと思うんですが、どうも下位のスレッドが動いているときにUIの処理にもたつきが出ます。
まだ、IOなどで処理が絡んでると子もあるかもしれないんですが、なんかスレッドの動作も影響してるような・・・