【问题标题】:Set a timeout value on calling a function in .NET在 .NET 中调用函数时设置超时值
【发布时间】:2013-02-10 11:45:14
【问题描述】:

在.NET中调用函数时是否可以设置超时值?我正在使用一个名为 SharpBox 的第三方组件,它循环一组 Dropbox 帐户并将内容拉入我服务器上的给定文件夹。

Dim itemsDownload as integer = pollSingleDropboxAccount(accountID)

function pollSingleDropboxAccount(accountID as integer) as integer
   //Utilises Sharpbox to download the files and return the count
   //In here a connection is established using the SharpBox.dll
   //but never gets closed or throws an exception leaving the
   //function to hang indefinitely
end function

Sharpbox 在幕后使用 HTTPWebRequest 联系 Dropbox API,但似乎默认超时为无限,并且无法覆盖此值。我已经向 SharpBox 提出了功能请求,但我正在寻找我们可以同时使用的东西作为解决方法。

为了规避这个问题,我想知道我们是否可以在调用 'pollSingleDropboxAccount' 函数周围加上一些东西,以便在 5 分钟后放弃?

【问题讨论】:

  • 你能使用 .NET 4.0+ 的 TPL 吗?
  • Implement C# Generic Timeout 的可能重复项
  • 我们使用的是 .NET 4,所以是的,这是可行的。我现在正在图书馆查看更多细节

标签: .net function timeout dropbox sharpbox


【解决方案1】:

是的,这是可能的。

1) 在函数调用后创建并运行定时器并启动它

2) 在计时器的回调中做任何你需要的事情(调用你的函数)

MSDN阅读有关计时器的信息

编辑:请注意,.NET 中至少有 3 种类型的计时器,它们的行为不同。其中一些将在超时后触发(在您的情况下每 5 分钟),直到您对它们调用 Stop 并且其中一些只执行一次。

【讨论】:

  • 也在调查这个。我们正在修改 MSDN 文章中的示例。谢谢!
  • @QF_Developer 我对这个话题也很感兴趣,请你举个例子,你最终是如何解决这个问题的?谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 2019-01-26
  • 2017-04-26
  • 2010-10-17
  • 1970-01-01
  • 2023-03-23
  • 2016-03-15
  • 1970-01-01
相关资源
最近更新 更多