Странная внезапная ошибка с БД
От: 1datr  
Дата: 15.01.14 11:55
Оценка:
В программе есть фрагмент. Он выполняется нормально, но в некоторых ситуациях начинает вывешивать такие кренделя:

Тот самый код:
private void load(int cell) // загрузка из ячейки
        {
            lock (this)
            {
                this.bsPoddon.Filter = "(cell_id=" + cell.ToString() + ") AND (stacker_id=1)";
                bsPoddon.MoveFirst();
                int count = bsPoddon.Count;
                for (int i = 0; i < count; i++)
                {
                    edit_cell_info(-1);
                    bsPoddon.MoveNext();
                }
                this.stacker1.SetCellFree(cell);
                //this.bsPoddon.Filter = this.bsPoddon.Filter;

                bsPoddon.Filter = bsPoddon.Filter;
                //productlistTableAdapter.Update(this.dbTiaraDataSet4);
                stacker1.refresh();
            }
        }

        private void edit_cell_info(int cell_id)
        {
            object theitem = bsPoddon.Current;
            if (!bsPoddon.AllowEdit) return;
            if (theitem.GetType() == typeof(DataRowView))
            {
                DataRowView dr = ((DataRowView)bsPoddon.Current);
                //DataRowView dr = ((DataRowView)theitem);
                if (dr != null)
                {
                    dr["cell_id"] = cell_id;
                    dr["changed"] = DateTime.Now;
                }                                         
            }
            else
            {
                CurrencyManager cmgr = bsPoddon.CurrencyManager;
                DataRow dr = ((DataRowView)cmgr.Current).Row;
                //DataRowView dr = ((DataRowView)theitem);             

                dr["cell_id"] = cell_id;
                dr["changed"] = DateTime.Now;

            }
            bsPoddon.EndEdit();
        }

        private void unload(int cell)   // выгрузка в ячейку
        {
            lock (this)
            {
                this.bsPoddon.Filter = "(cell_id=-1) AND (stacker_id=1)";
                bsPoddon.MoveFirst();
                int count = bsPoddon.Count;
                for (int i = 0; i < count; i++)
                {
                    edit_cell_info(cell);
                    this.bsPoddon.MoveNext();
                }
                this.stacker1.SetCellOccupied(cell);
                this.bsPoddon.Filter = this.bsPoddon.Filter;
                //productlistTableAdapter.Update(this.dbTiaraDataSet4);
                stacker1.refresh();
            }
        }

Причем и с локом и без. И с EndEdit и без.
ado.net ошибка
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.