+2008-05-30 Marek Habersack <mhabersack@novell.com>
+
+ * Constraint.cs: do not use synthetized event accessors (to avoid
+ locks).
+
2008-05-29 Marek Habersack <mhabersack@novell.com>
* DataColumn.cs: do not use synthetic methods for events - this
[TypeConverterAttribute (typeof (ConstraintConverter))]
public abstract class Constraint
{
- internal event DelegateConstraintNameChange BeforeConstraintNameChange;
+ static readonly object beforeConstraintNameChange = new object ();
+
+ EventHandlerList events = new EventHandlerList ();
+
+ internal event DelegateConstraintNameChange BeforeConstraintNameChange {
+ add { events.AddHandler (beforeConstraintNameChange, value); }
+ remove { events.RemoveHandler (beforeConstraintNameChange, value); }
+ }
//if constraintName is not set then a name is
//created when it is added to
private void _onConstraintNameChange (string newName)
{
- if (null != BeforeConstraintNameChange)
- {
- BeforeConstraintNameChange (this, newName);
- }
+ DelegateConstraintNameChange eh = events [beforeConstraintNameChange] as DelegateConstraintNameChange;
+ if (eh != null)
+ eh (this, newName);
}
//call once before adding a constraint to a collection