UIスレッドで実行すると上手く動作するなら、そちらの呼び方が悪いのだと思いますよ。