ファイルシステム内のいくつかのディレクトリを同期する非常に長いタスクを実行する Sub を呼び出す必要がある単純な vb.net Web サイトがあります (詳細は重要ではありません)。
メソッドを呼び出すと、サブルーチンが完了するのを待っている Web サイトで最終的にタイムアウトになります。ただし、Web サイトがタイムアウトしても、ルーチンは最終的にそのタスクを完了し、すべてのディレクトリは正常に終了します。
タイムアウトを防ぎたいだけなので、Sub を非同期で呼び出したいだけです。正常に実行されたというコールバック/確認は必要ありません (または必要ありません)。
では、VB.net を使用して Web サイト内でメソッドを非同期的に呼び出すにはどうすればよいでしょうか?
コードが必要な場合:
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