CellValueChanged で無限再帰に陥らないようにする

DataGridView の CellValueChanged イベントの処理コード内でその DataGridView を弄っていたりすると、無限再帰になりかねないので、

private void grd_hoge_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        grd_hoge.CellValueChanged -= grd_hoge_CellValueChanged;
        // ...
    }
    finally
    {
        grd_hoge.CellValueChanged += grd_hoge_CellValueChanged;
    }
}

としたんだけど、これはそもそも問題の根本解決ではないからやるべきではないのかな。