Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top