【问题标题】:FluentFtp async methods not workngFluentFtp 异步方法不起作用
【发布时间】:2020-12-11 11:50:23
【问题描述】:

我正在使用 FLuentFtp 从 ftp 下载文件。如果我调用同步方法:

client.Connect();

var status = client.DownloadFile(localPath, ftpPath);

然后它可以工作,但异步版本即:

await client.ConnectAsync();

FtpStatus status = client.DownloadFileAsync(localPath, ftpPath).Result;

两者都不起作用。两者都不会引发异常,但它们不会在 2 分钟内完成,而同步版本需要 2 秒。

可能没有线程可用于运行这些方法,如果是,我该如何检查。

TaskState 是 WaitingForActivation 如果这有助于缩小范围。

【问题讨论】:

  • 你为什么不等待DownloadFileAsync?为什么叫Result属性?

标签: c# fluentftp


【解决方案1】:

我想,你有一个deadlock 排队:

client.DownloadFileAsync(localPath, ftpPath).Result;

你应该用 await 调用它:

FtpStatus status = await client.DownloadFileAsync(localPath, ftpPath);

【讨论】:

  • 好吧,但是当异步调用连接时它甚至没有到达那条线。我也不同意它应该死锁但阻塞我同意的线程。
  • 实际上我尝试了您链接的问题中的解决方案,它解决了我的问题。我不能说完全理解为什么,但它现在正在工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2018-09-12
  • 2012-03-04
  • 1970-01-01
  • 2014-08-17
  • 2020-03-11
  • 2020-12-29
相关资源
最近更新 更多