gpt4 book ai didi

C# DownloadSync 事件未触发

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:22 26 4
gpt4 key购买 nike

试验 WebClient.DownloadFileAsync:

public void DownloadFile(string fileUrl, string localFile)
{
using (WebClient client = new WebClient())
{
downloadingFile = true;
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(fileUrl), localFile);

while (downloadingFile) { };
}
}

private void client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
downloadingFile = false;
}

问题是从未触发 DownloadFileCompleted 事件,所以我从未设置 downloadingFile = false => while 循环永远不会完成。

有什么问题吗?

谢谢!

最佳答案

这似乎是一个逻辑错误(一种死锁情况),因为您的主线程在一个条件下连续循环并且即使下载完成也永远没有时间引发事件。

解决方案#1:删除 while (downloadingFile) { };释放主线程的行,如果你想保持控制流,你可以使你的方法 DownloadFile 异步并使用以下代码行来等待 DownloadFile 方法的变体。

await client.DownloadFileTaskAsync(new Uri(fileUrl), localFile);

关于C# DownloadSync 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781772/

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