Wie man einen sehr einfachen asynchronen Methodenaufruf in vb.net durchführt

Ich habe nur eine einfache vb.net-Website, die ein Sub aufrufen muss, das eine sehr lange Aufgabe ausführt, die mit dem Synchronisieren einiger Verzeichnisse im Dateisystem arbeitet (Details nicht wichtig).

Wenn ich die Methode aufrufe, tritt auf der Website eine Zeitüberschreitung auf, die darauf wartet, dass die Unterroutine abgeschlossen ist. Obwohl die Website eine Zeitüberschreitung aufweist, ist die Routine schließlich abgeschlossen, und alle Verzeichnisse enden so, wie sie sollten.

Ich möchte nur die Zeitüberschreitung verhindern, also möchte ich den Sub einfach asynchron aufrufen. Ich brauche (oder will) nicht und Rückruf / Bestätigung, dass es erfolgreich lief.

Wie kann ich meine Methode mithilfe von VB.net innerhalb einer Website asynchron aufrufen?

Wenn Sie Code benötigen:

<code>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Call DoAsyncWork()
End Sub

Protected Sub DoAsyncWork()
        Dim ID As String = ParentAccountID
        Dim ParentDirectory As String = ConfigurationManager.AppSettings("AcctDataDirectory")
        Dim account As New Account()
        Dim accts As IEnumerable(Of Account) = account.GetAccounts(ID)

        For Each f As String In My.Computer.FileSystem.GetFiles(ParentDirectory)
            If f.EndsWith(".txt") Then
                Dim LastSlashIndex As Integer = f.LastIndexOf("\")
                Dim newFilePath As String = f.Insert(LastSlashIndex, "\Templates")
                My.Computer.FileSystem.CopyFile(f, newFilePath)
            End If
        Next

        For Each acct As Account In accts
            If acct.ID <> ID Then
                Dim ChildDirectory As String = ConfigurationManager.AppSettings("AcctDataDirectory") & acct.ID
                If My.Computer.FileSystem.DirectoryExists(ChildDirectory) = False Then
                    IO.Directory.CreateDirectory(ChildDirectory)
                End If
                My.Computer.FileSystem.DeleteDirectory(ChildDirectory, FileIO.DeleteDirectoryOption.DeleteAllContents)
                My.Computer.FileSystem.CopyDirectory(ParentDirectory, ChildDirectory, True)
            Else
            End If
        Next
End Sub
</code>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage