' If a file is ready Public Function IsFileReady() As Boolean Dim lcFile As String = "" Dim llSuccess As Boolean = False ' Reset the values lIsFileReady = False ' Initialization lcFile = Trim(cFile) ' If the file is empty If lcFile.Length = 0 Then cMessage = cYouNeedToDefineTheCFileProperty Return False End If ' If the file can be opened for exclusive access it means that the file is no longer locked by another process Try ' Try to open the file for exclusive access Using loFileStream As System.IO.FileStream = System.IO.File.Open(lcFile, _ System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.None) ' If we have a stream If loFileStream.Length >= 0 Then lIsFileReady = True End If End Using llSuccess = True Catch loError As System.Exception cMessage = loError.Message llSuccess = True End Try ' Reset the values cFile = "" Return llSuccess End FunctionThe goal I am following is to always have a return for a method which represents the success of its operation. Then, I rely on a property to see if a specific flag is on or off. However, in this case, because the Using will fall into the Catch if the file is not ready, which could be a normal behavior in specific circumstances, it still denotes that the method did in fact operate with success.