# API Changes in v2.24

> Reference: API changes of Opc.UaFx.Advanced in v2.24: 55 added, 0 removed, 2 changed, 1 obsoleted.

<dl class="api-definition">
<dt>Release</dt>
<dd>v2.24.0</dd>
<dt>Compared with</dt>
<dd>v2.23.0</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced</dd>
</dl>

## Added

### Opc.UaFx

| Symbol | Signature |
|---|---|
| [IOpcAsyncMethodCommand](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcasyncmethodcommand/)<span class="api-meta">1 member</span> | `public interface IOpcAsyncMethodCommand : IOpcMethodCommand` |
| [OpcAutomatism.UseAsyncMethodCalls](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcautomatism/members#useasyncmethodcalls) | `public static bool UseAsyncMethodCalls { get; set; }` |
| [OpcMethodCommands.Execute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodcommands/members#execute) | `public static IOpcMethodCommand Execute(OpcMethodCommands.ExecuteDelegate callback)` |
| [OpcMethodCommands.ExecuteAsync](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodcommands/members#executeasync) | `public static IOpcAsyncMethodCommand ExecuteAsync(OpcMethodCommands.ExecuteAsyncDelegate callback)` |
| [OpcMethodCommands.ExecuteAsyncDelegate](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodcommands.executeasyncdelegate/) | `public delegate Task<OpcResult> OpcMethodCommands.ExecuteAsyncDelegate(OpcMethodContext context, IList<object> inputArguments, IList<object> outputArguments)` |
| [OpcMethodCommands.ExecuteDelegate](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodcommands.executedelegate/) | `public delegate OpcResult OpcMethodCommands.ExecuteDelegate(OpcMethodContext context, IList<object> inputArguments, IList<object> outputArguments)` |
| [OpcRange](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcrange/)<span class="api-meta">31 members</span> | `[OpcDataType(291)] public readonly struct OpcRange : IComparable, IComparable<OpcRange>, IEquatable<OpcRange>` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-int32-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcReadNode(int nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-int32-system-int32-opc-uafx-opcrange) | `public OpcReadNode(int nodeId, int namespaceIndex, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcReadNode(int nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-int32-opc-uafx-opcrange) | `public OpcReadNode(int nodeId, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-opc-uafx-opcnodeid-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcReadNode(OpcNodeId nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-opc-uafx-opcnodeid-opc-uafx-opcrange) | `public OpcReadNode(OpcNodeId nodeId, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-string-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcReadNode(string nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-string-system-int32-opc-uafx-opcrange) | `public OpcReadNode(string nodeId, int namespaceIndex, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-string-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcReadNode(string nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#opcreadnode-system-string-opc-uafx-opcrange) | `public OpcReadNode(string nodeId, OpcRange range)` |
| [OpcReadNode.Range](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnode/members#range) | `public OpcRange Range { get; }` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-int32-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcWriteNode(int nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-int32-system-int32-opc-uafx-opcrange-system-object) | `public OpcWriteNode(int nodeId, int namespaceIndex, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcWriteNode(int nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-int32-opc-uafx-opcrange-system-object) | `public OpcWriteNode(int nodeId, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-opc-uafx-opcnodeid-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcWriteNode(OpcNodeId nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-opc-uafx-opcnodeid-opc-uafx-opcrange-system-object) | `public OpcWriteNode(OpcNodeId nodeId, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-string-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcWriteNode(string nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-string-system-int32-opc-uafx-opcrange-system-object) | `public OpcWriteNode(string nodeId, int namespaceIndex, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-string-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcWriteNode(string nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcWriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#opcwritenode-system-string-opc-uafx-opcrange-system-object) | `public OpcWriteNode(string nodeId, OpcRange range, object value)` |
| [OpcWriteNode.Range](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritenode/members#range) | `public OpcRange Range { get; }` |

### Opc.UaFx.Client

| Symbol | Signature |
|---|---|
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-int32-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcValue ReadNode(int nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-int32-system-int32-opc-uafx-opcrange) | `public OpcValue ReadNode(int nodeId, int namespaceIndex, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcValue ReadNode(int nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-int32-opc-uafx-opcrange) | `public OpcValue ReadNode(int nodeId, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-opc-uafx-opcnodeid-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcValue ReadNode(OpcNodeId nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-opc-uafx-opcnodeid-opc-uafx-opcrange) | `public OpcValue ReadNode(OpcNodeId nodeId, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-string-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcValue ReadNode(string nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-string-system-int32-opc-uafx-opcrange) | `public OpcValue ReadNode(string nodeId, int namespaceIndex, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-string-opc-uafx-opcattribute-opc-uafx-opcrange) | `public OpcValue ReadNode(string nodeId, OpcAttribute attribute, OpcRange range)` |
| [OpcClient.ReadNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnode#readnode-system-string-opc-uafx-opcrange) | `public OpcValue ReadNode(string nodeId, OpcRange range)` |
| [OpcClient.ReadNodes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodes#readnodes-opc-uafx-opcattribute-opc-uafx-opcrange-system-collections-generic-ienumerable-of-opc-uafx-opcnodeid) | `public IEnumerable<OpcValue> ReadNodes(OpcAttribute attribute, OpcRange range, IEnumerable<OpcNodeId> nodeIds)` |
| [OpcClient.ReadNodes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodes#readnodes-opc-uafx-opcattribute-opc-uafx-opcrange-opc-uafx-opcnodeid-array) | `public IEnumerable<OpcValue> ReadNodes(OpcAttribute attribute, OpcRange range, params OpcNodeId[] nodeIds)` |
| [OpcClient.ReadNodes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodes#readnodes-opc-uafx-opcrange-system-collections-generic-ienumerable-of-opc-uafx-opcnodeid) | `public IEnumerable<OpcValue> ReadNodes(OpcRange range, IEnumerable<OpcNodeId> nodeIds)` |
| [OpcClient.ReadNodes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodes#readnodes-opc-uafx-opcrange-opc-uafx-opcnodeid-array) | `public IEnumerable<OpcValue> ReadNodes(OpcRange range, params OpcNodeId[] nodeIds)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-int32-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(int nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-int32-system-int32-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(int nodeId, int namespaceIndex, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(int nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-int32-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(int nodeId, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-opc-uafx-opcnodeid-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(OpcNodeId nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-opc-uafx-opcnodeid-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(OpcNodeId nodeId, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-string-system-int32-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(string nodeId, int namespaceIndex, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-string-system-int32-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(string nodeId, int namespaceIndex, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-string-opc-uafx-opcattribute-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(string nodeId, OpcAttribute attribute, OpcRange range, object value)` |
| [OpcClient.WriteNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/writenode#writenode-system-string-opc-uafx-opcrange-system-object) | `public OpcStatus WriteNode(string nodeId, OpcRange range, object value)` |

### Opc.UaFx.Server

| Symbol | Signature |
|---|---|
| [OpcNodeAccessToken.Range](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodeaccesstoken/members#range) | `public OpcRange Range { get; }` |
| [OpcNodeManager.UseAsyncMethodCalls](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/members#useasyncmethodcalls) | `protected virtual bool UseAsyncMethodCalls { get; }` |

## Changed

### Opc.UaFx

| Symbol | Signature (old, new) |
|---|---|
| [OpcReadVariableValueContext&lt;T&gt;.Range](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext-1/members#range) | `[CLSCompliant(false)] public NumericRange Range { get; }`<br>`public OpcRange Range { get; }` |
| [OpcWriteVariableValueContext&lt;T&gt;.Range](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext-1/members#range) | `[CLSCompliant(false)] public NumericRange Range { get; }`<br>`public OpcRange Range { get; }` |

## Obsoleted

### Opc.UaFx.Server

| Symbol | Message |
|---|---|
| [OpcNodeAccessToken.IndexRange](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodeaccesstoken/members#indexrange) | Use new 'Range' property instead. |
