C#の言語形態はわかりませんが、Access的に...
DoCmd.SetWarnings を使っているということは、それ以前行でDoCmdを使ったアクションクエリなどの処理を走らせていませんか?
DoCmdは非同期実行され、処理完了を待ってくれません。
ある程度は待つような雰囲気ですが、その時間の境目がわかりません。
法則がつかめられないのは実行環境やデータ量にそれが左右されるからだと感じ取れます。
そしてそれでたぶん、未だ更新中にDoCmd.SetWarningsが発行されてしまいエラーになってるような気がします(あくまで予想)
もしアクションクエリなら、回避策はCurrentDb.ExecuteやCurrentProject.Connection.Executeでクエリを実行させてみてください。