C#으로의 WinForm에서 일을 해달라고 이벤트는 콘솔 응용 프로그램에서 만의 WinForm에서 작업하는 videoDownloader_DownloadFinished일부 이벤트는 내가 YoutubeExtractor의 dll을 .. videoDownloader_ProgressChanged을 사용하고
private void btnStart_Click(object sender, EventArgs e)
{
string link = textBox1.Text;
start(link);
}
static void start(string link)
{
IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link);
DownloadVideo(videoInfos);
}
private static void DownloadVideo(IEnumerable<VideoInfo> videoInfos)
{
VideoInfo video = videoInfos
.First(info => info.VideoFormat == VideoFormat.Standard360);
var videoDownloader = new VideoDownloader(video, Path.Combine("C:/Downloads", video.Title + video.VideoExtension));
videoDownloader.DownloadFinished += new EventHandler(videoDownloader_DownloadFinished);
videoDownloader.ProgressChanged += new EventHandler<ProgressEventArgs>(videoDownloader_ProgressChanged);
videoDownloader.Execute();
}
static void videoDownloader_ProgressChanged(object sender, ProgressEventArgs e)
{
//some code..
}
static void videoDownloader_DownloadFinished(object sender, EventArgs e)
{
//some code..
}
내 두 번째 질문은 정적 videoDownloader_ProgressChanged 이벤트에서 양식 컨트롤에 액세스하려고합니다. e.ProgressPercentage 매개 변수를 통해 다운로드 한 비디오의 비율을 알 수 있습니다. 레이블에 표시하고 싶습니다. 하지만 정적 이벤트 때문에 액세스 레이블이 없습니다 .. 대리자를 사용하려고했지만 아무 것도 변경되지 않았습니다.
정적을 사용하는 이유는 무엇입니까? – Likurg
GUI 이벤트 핸들러에서 'videoDownloader.Execute()'와 같은 메서드를 호출하는 것은 매우 나쁜 생각입니다. 그것은 무엇을하며 더 중요한 것은 얼마나 걸리나요? 인간이 눈에 띄는 시간이 필요하다면 꺼내십시오. 변경된/완료된 핸들러에서 BeginInvoke()를 수행해야합니다. –
어떤 구성 요소를 사용하고 있는지 명확하지 않습니다. 지원을 받으려면 소유자 또는 작성자에게 문의해야합니다. –