2011-04-27 47 views
0

我正在編寫一個與外部應用程序接口的ASP.NET類。 Web服務器和此應用程序之間的事務處理流程如下:用於ASP.NET的非鎖定睡眠/ waitfor /延遲功能

  1. 我的對象將文件寫入目錄。
  2. 外部應用程序檢測到該文件並對其進行處理。這可能需要1-5秒。
  3. 外部應用程序將響應文件寫入相同的目錄。
  4. 我的對象檢測到響應文件並分析結果。

它可以採取外部應用程序來處理我的文件的1-5秒是我的問題。最直接的方法,以等待文件似乎是這樣的:

Do While Not File.Exists(f) 
    Thread.Sleep(500) 
Loop 

當然,Thread.sleep()方法,直到外部應用程序處理文件完全鎖定了我的網站的其餘部分。顯然,這不是一個可行的解決方案。

如何有效地「等待」我的文件被處理而不鎖定我的網站的其餘部分?

回答

2

使用FileSystemWatcher - 當文件被創建時,它會觸發一個您可以訂閱的事件。

+0

我試過FileSystemWatcher,但頁面加載在事件觸發前完成。看起來這種類型的解決方案更適合於應用程序級別的功能,但不適用於我的情況。 – dansays 2011-04-27 12:53:22

+0

@dansays - 您可以隨時爲此工作創建一個線程。 – Oded 2011-04-27 12:55:55

+0

我的背景主要是在網頁開發中,旋轉線程比我頭腦凌亂。粗略的Google搜索只會讓我更加困惑。您是否可以提供一個簡單的代碼示例,或者有關如何在此上下文中使用線程的解釋的鏈接? – dansays 2011-04-27 13:05:24