- Implementierung von `IDisposable` in der Klasse `Client`, um Ressourcen wie Timer und Kanäle ordnungsgemäß freizugeben. - Einführung von `ActiveClients` und `ClientStatus` zur Verfolgung und Statusanzeige aktiver Clients. - Verbesserte Fehlerbehandlung mit der Methode `HandleCommunicationError`, die Kommunikationsfehler protokolliert, den Client offline setzt und einen Reconnect auslöst. - Optimierung der Reconnect-Logik mit asynchronen Wiederverbindungsversuchen und gestaffelten Verzögerungen. - Erweiterung der Konstruktoren in `Client` um einen optionalen `pClientName`-Parameter und Generierung eines eindeutigen `ClientId`. - Verbesserte Timer-Logik und asynchrone Verarbeitung in `UpdateTimer_Elapsed`. - Einführung der Methode `EnsureAvailable`, um sicherzustellen, dass der Kanal vor Service-Aufrufen verfügbar ist. - Hinzufügen asynchroner Varianten für Service-Methoden (`GetDatatable`, `GetScalarValue`, `ExecuteNonQuery`) und Fallback auf direkte Datenbankzugriffe. - Verbesserte Timeout-Einstellungen und Verbindungsverwaltung in der Klasse `Channel`. - Erweiterungen in `DatabaseWithFallback` für asynchrone Methoden und detaillierteres Logging. - Aktualisierung der Assembly-Version auf `2.7.0`.
38 lines
1.4 KiB
VB.net
38 lines
1.4 KiB
VB.net
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
|
|
Imports DigitalData.Modules.EDMI.API.Options
|
|
Imports DigitalData.Modules.Logging
|
|
|
|
Namespace Modules.IDB
|
|
Public Class SetAttributeValue
|
|
Inherits BaseMethod
|
|
|
|
Public Sub New(pLogConfig As LogConfig, pChannel As IEDMIServiceChannel)
|
|
MyBase.New(pLogConfig, pChannel)
|
|
End Sub
|
|
|
|
Public Async Function RunAsync(pObjectId As String, pAttributeName As String, pAttributeValue As Object, Optional pOptions As SetAttributeValueOptions = Nothing) As Task(Of Boolean)
|
|
Try
|
|
Dim oParams As New SetAttributeValueRequest With {
|
|
.ObjectId = pObjectId,
|
|
.Language = pOptions.Language,
|
|
.Who = pOptions.Username,
|
|
.AttributeName = pAttributeName,
|
|
.AttributeValue = pAttributeValue
|
|
}
|
|
Dim oResponse As SetAttributeValueResponse = Await Channel.SetAttributeValueAsync(oParams)
|
|
|
|
If oResponse.OK Then
|
|
Return True
|
|
End If
|
|
|
|
Logger.Warn("⚠ Error while setting Attribute Value: [{0}]", oResponse.ErrorMessage)
|
|
Return False
|
|
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Return False
|
|
|
|
End Try
|
|
End Function
|
|
End Class
|
|
End Namespace |