2011-04-27 116 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