C# 使窗体在函数C期间可用#
我在另一个线程上运行函数时遇到问题,我尝试了BackgroundWorked和System.Threading方法 如果使用其中任何一个函数,函数都不会启动,如果没有这些函数,它会将表单冻结几秒钟,直到工作完成 它是一个youtube下载程序,使用从youtube获取信息的库 我有一个VideoItem类,里面有一个数组,保存视频的所有质量,并有链接。填充需要10秒左右的时间 在我的主窗体中,有一个函数可以在用户按下按钮时创建一个新的VideoInfo实例C# 使窗体在函数C期间可用#,c#,.net,multithreading,youtube,backgroundworker,C#,.net,Multithreading,Youtube,Backgroundworker,我在另一个线程上运行函数时遇到问题,我尝试了BackgroundWorked和System.Threading方法 如果使用其中任何一个函数,函数都不会启动,如果没有这些函数,它会将表单冻结几秒钟,直到工作完成 它是一个youtube下载程序,使用从youtube获取信息的库 我有一个VideoItem类,里面有一个数组,保存视频的所有质量,并有链接。填充需要10秒左右的时间 在我的主窗体中,有一个函数可以在用户按下按钮时创建一个新的VideoInfo实例 public void add
public void addURLfromClipboard()
{
string clipboardURL = Clipboard.GetText();
VideoItem _item;
if (clipboardURL.StartsWith("https://www.youtube.com/watch?v=") || clipboardURL.StartsWith("http://www.youtube.com/watch?v="))
{
DownloadUrlResolver.OnDownloadProgressChanged += DownloadUrlResolver_OnDownloadProgressChanged;
videosProcessing++;
progressbar.Enabled = true;
_item = new VideoItem(clipboardURL);
if (listYoutube.FindItemByVideo(_item) == null) listYoutube.AddItem(_item);
videosProcessing--;
if (videosProcessing == 0) progressbar.Enabled = false;
}
else return;
}
在函数调用期间,如何使窗体响应?如果将整个函数体包装在
Task.Factory.StartNew(()=>{body here})中代码>它应该立即返回。可能不是任务中的函数体,但从任务内部调用函数+1无论如何,干杯!