Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - ColumnChanged-Event Stackoverflow vermeiden
Neues rund um's Thema .Net
 
 Wednesday, October 11, 2006

Wenn auf einer DataTable ein ColumnChanged-Event eingesetzt wird um bei Änderungen eines Wertes in der DataTable andere Werte in der selben table neu zu berechnen, ergibt sich das Problem, dass das zurückschreiben der neuberechneten Werte wieder zu einem ColumnChanged führt, was den Evbenthandler erneut aufruft und so in einer Endlosschleife endet, die mit einem StackOverflow endet.

Hier gibt es eine recht simple Abhilfe. Man deregistriert den EventHandler bevor die geänderten Werte geschrieben werden und registriert ihn danach einfach wieder. Das kann dann z.B. so aussehen:

void myTable_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
   myDataSet.myTable.ColumnChanged -= new DataColumnChangeEventHandler(myTable_ColumnChanged);
   RecalculateValues();
   myDataSet.myTable.ColumnChanged += new DataColumnChangeEventHandler(myTable_ColumnChanged);
}

Wednesday, October 11, 2006 8:59:55 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
Copyright © 2008 Thomas. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: