【发布时间】:2014-05-28 21:48:42
【问题描述】:
我有一个管理从特定资源下载文件的类。该类在 GUI 线程中实例化。例如,该类称为MP3Download。
在MP3Downloader内我有一个方法叫DownloadFile:
public async Task DownloadFIle(string url, string path)
{
using (WebClient client = new WebClient())
{
client.DownloadProgressChanged += (s, e) =>
{
Console.WriteLine("Changed");
};
try
{
await client.DownloadFileTaskAsync(url, path);
} catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
我在 GUI 上有一个进度条。我想知道如何将下载进度报告回进度条。
我是否必须在 MP3Downloader 类中创建一个事件并从 GUI 订阅该事件?当DownloadProgressChanged 被触发时,我将发送者和事件参数传递给我的自定义事件?
我不想将进度条与MP3Downloader 类结合起来。
【问题讨论】:
-
我相信你的问题的答案是肯定的,使用一个事件。如果要松耦合,请通过接口。这能回答你的问题还是我错过了什么?
标签: c#