C# 当IProgress为100%时,是否有方法

C# 当IProgress为100%时,是否有方法,c#,C#,我需要在我的软件中下载mp3格式的youtube视频。 为此,我使用了图书馆。下载命令中有一个可选参数IProgress: 但是我以前从未听说过IProgress,所以我想知道:如何知道IProgress值是否为100% 代码如下: var youtube = new YoutubeClient(); var streamManifest = await youtube.Videos.Streams.GetManifestAsync(ytURL); var streamInfo = stre

我需要在我的软件中下载mp3格式的youtube视频。 为此,我使用了图书馆。下载命令中有一个可选参数
IProgress

但是我以前从未听说过IProgress,所以我想知道:如何知道
IProgress
值是否为100%

代码如下:

var youtube = new YoutubeClient();

var streamManifest = await youtube.Videos.Streams.GetManifestAsync(ytURL);
var streamInfo = streamManifest.GetAudioOnly().WithHighestBitrate();

if (streamInfo != null)
{
    // Download the stream to file
    await youtube.Videos.Streams.DownloadAsync(streamInfo, Utilities.songPath + @"\" + songNameWithArtist + ".mp3", cancellationToken:cancelDownload);                         
}
如何知道IProgress值是否为100%

返回的任务完成,方法在
等待
之后继续执行

例如:


如评论中所述,
IProgress
可能永远无法达到100%。此外,如果这不是一个UI应用程序,您可能会在操作完成后收到进度报告;这些额外的进度报告应该被忽略。

这是一个事件。也就是说,当进度达到100%时,该方法无论如何都应该返回。所以,在大多数情况下,你不需要检查它是否达到100%。方法返回后,您只需继续执行下一步。请注意,该方法可能会报告100%的进度,但仍有一些“完成业务”要做,您可能希望在执行下一步之前等待一切完成。此外,如果进度值计算不准确(虽然它应该是),它可能永远不会达到100%,并且只会非常接近它(例如99.99%)。welp no事件不属于接口本身。您可以从调用者方法(传递
Progress
对象)而不是从被调用者访问它。你问我如何检查进度是否达到100%,我的回答是(一般的)。您当前的代码甚至没有
IProgress
的实例。我们需要知道它在哪里,从哪里来,以及您希望检查进度的确切位置。谢谢,终于有人聪明了^^:)
await youtube.Videos.Streams.DownloadAsync(streamInfo, filename, progress, cancellationToken:cancelDownload);
// Operation is completed when the code gets here