Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET中的任务工厂超时_Asp.net_Vb.net_Timeout_Taskfactory - Fatal编程技术网

ASP.NET中的任务工厂超时

ASP.NET中的任务工厂超时,asp.net,vb.net,timeout,taskfactory,Asp.net,Vb.net,Timeout,Taskfactory,我一直在搜寻异步任务的超时设置信息,但我找不到任何不涉及等待的信息。也许我看错了 我有一个API调用,可能需要10分钟才能完成文件传输。我创建了一个新线程,这样用户就不必坐在那里看着这种情况发生。我添加了数据库更新,这样我就可以知道发生了什么。上传开始,几分钟后。。。没有什么传输被中止,没有引发异常,也没有数据库更新。这一定意味着线程已断开,对吗?我怎样才能让它活得更久?谢谢你的帮助 Sub up_load(s As Object, e As EventArgs) Dim upload

我一直在搜寻异步任务的超时设置信息,但我找不到任何不涉及等待的信息。也许我看错了

我有一个API调用,可能需要10分钟才能完成文件传输。我创建了一个新线程,这样用户就不必坐在那里看着这种情况发生。我添加了数据库更新,这样我就可以知道发生了什么。上传开始,几分钟后。。。没有什么传输被中止,没有引发异常,也没有数据库更新。这一定意味着线程已断开,对吗?我怎样才能让它活得更久?谢谢你的帮助

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

不,线程不会像那样被“丢弃”。还有其他事情,您是否尝试过在调试器中遍历代码?你确定线程没有工作或者可能死锁了吗?我不知道如何进一步跟踪。正在执行request.Upload,上载开始。上载中止,错误代码未执行,成功代码未执行。如果它没有失败或成功,它会做什么?我知道这确实适用于较小的文件。代码可能会“挂起”,等待一些永远不会发生的事情。但这取决于YouTuberRequest的实现方式。这是否意味着它永远不会超时?看起来,如果该线程仍处于活动状态,它最终应该放弃YouTube响应并返回异常。我已经将此提交给谷歌,正在等待他们的回复。我不知道,这取决于YouTuberRequest的代码。线程不会超时,但web请求通常会超时。