1

非同期タスクのタイムアウト設定に関する情報を探していますが、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
4

0 に答える 0