2

Is it possible to set a timeout value when calling a function in .NET? I am using a third party component called SharpBox that loops a set of Dropbox accounts and pulls in the contents to a given folder on my server.

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 uses a HTTPWebRequest behind the scenes to contact the Dropbox API but seems to default the timeout to infinite and this value cannot be overridden. I've lodged a feature request with SharpBox but I'm looking for something we can use in the mean time as a workaround.

To circumvent this I'm wondering if we can wrap something around the call to the 'pollSingleDropboxAccount' function to give up after say 5 minutes?

QFDev
  • 8,668
  • 14
  • 58
  • 85

1 Answers1

1

Yes, it's possible.

1) Create and run timer after the function call and start it

2) In timer's callback do whatever you need (call your function)

Read about timer on MSDN

EDIT: Note, that there are at least 3 types of timer in .NET and they behave different. Some of them will fire after the timeout (every 5 minutes in your case) until you call Stop on them and some of them are executed only once.

VladL
  • 12,769
  • 10
  • 63
  • 83
  • 1
    Also looking into this. We're adapting the example in the MSDN article. Thanks! – QFDev Feb 25 '13 at 11:38
  • @QF_Developer I'm also very interested in this topic, would you please give an example how you solve this eventually? Thanks. – cateyes Jan 07 '14 at 22:25