線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2437
推到 Plurk!
推到 Facebook!

FileExists 限定 TimeOut 時間

答題得分者是:lu
DaiMan
一般會員


發表:4
回覆:3
積分:1
註冊:2002-05-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-25 15:22:11 IP:219.81.xxx.xxx 訂閱
各位先進,

由於 FileExists 並沒有 timeout 的參數, 所以在一次檢查網芳多台電腦有無該檔時, 碰上未開機的情況時間就會很長.

想請教是否可以由程式來限定 timeout 時間呢? 感謝指教

lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-27 18:09:33 IP:203.73.xxx.xxx 訂閱
山不轉~~路轉
先檢查該電腦是否已開機,若已開機才檢查檔案是否存在
可以用 PING 該台電腦

不過此一方式的缺點為,若該電腦有架設防火牆,則無法PING到該台電腦

===================引 用 DaiMan 文 章===================
各位先進,

由於 FileExists 並沒有 timeout 的參數, 所以在一次檢查網芳多台電腦有無該檔時, 碰上未開機的情況時間就會很長.

想請教是否可以由程式來限定 timeout 時間呢? 感謝指教

DaiMan
一般會員


發表:4
回覆:3
積分:1
註冊:2002-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-28 08:40:56 IP:219.81.xxx.xxx 訂閱
感謝指教,

其實在下也在 msdn 看到有人提供控制 thread 的方法,不過是用 VB寫的,小弟才疏學淺,不知如何改寫。

原文如下,在下也會嘗試前輩指教的方法試試,謝謝。

Private Class FileExistsHelper
Public Shared Function FileExists( _
ByVal file As String, _
ByVal timeOut As Integer) As Boolean
m_File = file
m_Exists = False
m_Thread = New System.Threading.Thread(AddressOf CallFileExists)
m_Thread.Start()
m_Thread.Join(timeOut)
m_Thread.Abort()
Return m_Exists
End Function
Private Shared Sub CallFileExists()
m_Exists = My.Computer.FileSystem.FileExists(m_File)
End Sub
Private Shared m_Thread As System.Threading.Thread
Private Shared m_File As String = String.Empty
Private Shared m_Exists As Boolean = False
End Class
Just use it like this
Dim b As Boolean = FileExistsHelper.FileExists(filePath, 2000)


Note that the class itself is not safe for multi-threading though.
編輯記錄
DaiMan 重新編輯於 2008-02-28 08:41:58, 註解 無‧
系統時間:2024-04-20 18:31:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!