Safe, will make operation only when other threads stop to work with the oldTable
public void RenameTable(string oldUserTableName, string newUserTableName) { for (; ; ) { if (_disposed) return; if (RenameTableInternal(oldUserTableName, newUserTableName)) return; System.Threading.Tasks.Task.Delay(TimeSpan.FromMilliseconds(200)); //System.Threading.Thread.Sleep(200); } }