Tareas Cron

Publicado al menos 4 años hace por Flexygo Team

Publicar un tema
Flexygo Team
Flexygo Team

Buenos días,
como podría crear una tarea que se ejecute una sola vez, o que se ejecute cada segundo, la idea es para hacer un proceso asíncrono en la BBDD.


Es un proceso de recalculo de saldo, es un proceso de varios segundos y no quiero tener al usuario esperando cuando le de a guardar, en principio lo tengo así creando jobs en SQL, que le digo que se ejecute dentro de unos seg, y luego de ejecutar se borre, pero es una solución que para hacer pruebas si pero para el cliente, no me gustaría, porque después de un tiempo se me están quedando jobs sin borrar, por eso estaba pensando una tarea cron de flexy que yo la habilite cuando le de a guardar ejecute lo que tenga que ejecutar y deshabilite (algo así)



0 Votos


1 Comentarios

Flexygo Team

Flexygo Team publicado al menos 4 años hace

Hola Ricardo,


Para lo que necesitas hacer puedes usar directamente de la programación asincrona de .net sin necesidad de crear ningún trabajo.
En  este ejemplo de código, se guardará un objeto, se lanzará una función  asincrona y se devolverá la interacción al usuario mientras la segunda  función continua en segundo plano:


Public Shared Function UpdateObj(Entity As EntityObject, Ret As ProcessHelper) As Boolean
        Try

            If Not Entity.CanUpdate Then
                Ret.LastException = New LocalizedException("You do Not have enough credentials to update this Object.")
                Return False
            End If

            If Entity.UpdateProcess(Settings.ObjectSettings.eUpdateType.Standard, "") Then

                ''Do something here after update.
                Task.Run(Sub() myAsyncFunction())

                Ret.Success = True
                Return True
            Else
                Ret.Success = False
                Ret.LastException = Entity.LastException
                Return False
            End If

        Catch ex As Exception
            Ret.Success = False
            Ret.LastException = ex
            Return False
        End Try
    End Function

    Public Shared Sub myAsyncFunction()
        'Do anything here witout await result
        For i As Integer = 0 To 60
            Threading.Thread.Sleep(1000)
        Next
    End Sub





Un saludo,
Rubén


0 Votos

Iniciar sesión o Registrarse para publicar un comentario