Create a subscription
You create a subscription inside the Start()
method.
Tip:
To insert a new method automatically:
- In Visual Studio, place the caret after the
+=
operator, and press TAB twice. - In Visual Studio Code, refer to the editor suggestions.
Example
In this example, the
Session_UserChange
method is subscribed to the user change event using the UserChange
event handler and the +=
operator.
public override void Start()
{
Session.UserChange += Session_UserChange;
}
Important: Always cancel the subscription in the
Stop()
method to avoid a memory leak. See Cancel a subscription.The following example shows the
Session_UserChange
method.
private void Session_UserChange(object sender, UserChangeEventArgs e)
{
Log.Info(e.newUser.BrowseName);
}
sender
- The
IUAObject
object that corresponds to the node origin of the event. e
- The C# object that contains the event data based on the data type of the event handler (
UserChangeEventArgs
in the example).
Event handlers
Depending on the event type, create a subscription by using different event handlers.
- Value change of a variable event
-
To subscribe a method to the value change of a variable, use the
VariableChange
event handler, supplied by theIUAVariable
class. See IUAVariable.VariableChange. - All events generated by an object
- To subscribe a method to all events generated by an object, use the
UAEvent
event handler, supplied by theIUAObject
class. See IUAObject.UAEvent. - A specific event of an object
-
To subscribe a method to a specific event generated by an object, use the corresponding event handler supplied by the type.
In this example, theOnMouseClick
event handler runs theButton2_OnMouseClick
method each timeButton2
is pressed. TheOnMouseClick
event handler is supplied by theButton
class.public override void Start() { var button2 = Owner.Get<Button>("Button2"); button2.OnMouseClick += Button2_OnMouseClick; } private void Button2_OnMouseClick(object sender, MouseClickEvent e) { var label2 = Owner.Get<Label>("Label2"); var button = (Button)sender; label2.Text = "Mouse click event on " + button.BrowseName; }