ASP.NET中的任务工厂超时
我一直在搜寻异步任务的超时设置信息,但我找不到任何不涉及等待的信息。也许我看错了 我有一个API调用,可能需要10分钟才能完成文件传输。我创建了一个新线程,这样用户就不必坐在那里看着这种情况发生。我添加了数据库更新,这样我就可以知道发生了什么。上传开始,几分钟后。。。没有什么传输被中止,没有引发异常,也没有数据库更新。这一定意味着线程已断开,对吗?我怎样才能让它活得更久?谢谢你的帮助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
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请求通常会超时。