俺はスレッドの同期には
 スレッド1でMonitor.Waitでオブジェクトを待機
 スレッド2で計算完了後渡したいデータをキューに入れる→Monitor.Pluse
 スレッド1でWaitが解けたらキューを取得
 以後ループ
ってやってる