gpt4 book ai didi

asp.net - VB.NET中YouTube DirectUpload的BackgroundWorker?

转载 作者:行者123 更新时间:2023-12-03 05:43:25 24 4
gpt4 key购买 nike

我正在尝试将服务器上的视频直接上传到YouTube。用户添加视频后,该视频将被复制到YouTube。

用户添加视频的操作应开始上载过程,这可能需要一段时间。该表单,即使是异步表单,也不应坐在那里等待它发生。它应该刚刚开始并允许用户继续前进,并相信它会在后台得到照顾。

为此,我尝试使用system.threading.backgroundworker。我希望这一过程将开始,并且Web应用程序将继续发展。不是。无论是异步还是完全回发,它都处于挂起状态,并在返回并更新lblmsg.text之前等待上载完成。

我应该采取其他方法来解决这个问题,以便用户可以启动上传过程,而不必等待它完成吗?到目前为止,这是我的代码:

Sub up_load(s As Object, e As EventArgs)
Dim worker As BackgroundWorker = New BackgroundWorker

worker.WorkerReportsProgress = True
worker.WorkerSupportsCancellation = True
AddHandler (worker.DoWork), AddressOf begin_upload

'call this and move on?
worker.RunWorkerAsync()

lblmsg.Text = "Successfully initiated upload"

End Sub

Sub begin_upload(s As Object, e As DoWorkEventArgs)

Dim request As New YouTubeRequest(settings)
Dim vidupload As New Video()

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")

Dim createdVideo As Video = Request.Upload(vidupload)
End Sub

最佳答案

您可能需要研究Task Parallel Library,以便在代码中添加多线程。根据您提供的代码:

添加此导入语句

Imports System.Threading.Tasks

并使用以下简单语句替换所有backgroundworker逻辑:
    Dim uploadTask As Task = Task.Factory.StartNew(Sub()
Dim request As New YouTubeRequest(settings)
Dim vidupload As New Video()

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")

Dim createdVideo As Video = request.Upload(vidupload)
End Sub)

现在,您可以使用uploadTask在后台上传视频,并且您的UI线程将可以自由处理其他代码。如果要取消和进度报告,确实会更加复杂,但是顶部的链接应该可以帮助您入门。

关于asp.net - VB.NET中YouTube DirectUpload的BackgroundWorker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com