非同期タスクのタイムアウト設定に関する情報を探していますが、wait() を含まないものは見つかりません。多分私はこれを間違って見ています。
ファイル転送を完了するのに 10 分かかる API 呼び出しがあります。ユーザーが座ってこれが起こるのを見る必要がないように、新しいスレッドを作成しました。データベースの更新を追加したので、何が起こっているのかがわかります。数分後にアップロードが開始されます...何もありません。転送は中止され、例外はスローされず、データベースは更新されません。これは、スレッドがドロップされたことを意味するに違いありませんよね? どうすればそれをより長く生き続けることができますか?助けてくれてありがとう。
Sub up_load(s As Object, e As EventArgs)
Dim uploadtask As Task = Task.Factory.StartNew(Sub() begin_upload(), TaskCreationOptions.LongRunning)
lblmsg.Text = "Successfully initiated upload"
End Sub
Sub begin_upload()
Dim request As New YouTubeRequest(settings)
Dim vidupload As New Video()
Dim cmdupdate As SqlCommand
vidupload.Title = "My Big Test Movie"
vidupload.Tags.Add(New MediaCategory("Nonprofit", YouTubeNameTable.CategorySchema))
vidupload.Keywords = "church, jesus"
vidupload.Description = "See the entire video"
vidupload.YouTubeEntry.Private = False
vidupload.YouTubeEntry.setYouTubeExtension("location", "Downers Grove, IL")
vidupload.YouTubeEntry.MediaSource = New MediaFileSource("c:\users\greg\test3.asf", "video/x-ms-wmv")
'updates fine
cmdupdate = New SqlCommand("Update transactions set name='upload started' where transactionid='18'", conHyperData)
conHyperData.Open()
cmdupdate.ExecuteNonQuery()
conHyperData.Close()
Try
'very long running task +5 min
Dim createdVideo As Video = request.Upload(vidupload)
'never gets here
cmdupdate = New SqlCommand("Update transactions set name='upload finished' where transactionid='18'", conHyperData)
conHyperData.Open()
cmdupdate.ExecuteNonQuery()
conHyperData.Close()
Catch ex As Exception
'never thrown, transfer aborts
cmdupdate = New SqlCommand("Update transactions set name=@name where transactionid='18'", conHyperData)
cmdupdate.Parameters.AddWithValue("@name", "failed - " & ex.ToString)
conHyperData.Open()
cmdupdate.ExecuteNonQuery()
conHyperData.Close()
End Try
End Sub