ASP.NET的非锁定睡眠/等待/延迟功能
我正在编写一个与外部应用程序接口的ASP.NET类。web服务器与此应用程序之间的事务流程如下所示:ASP.NET的非锁定睡眠/等待/延迟功能,asp.net,vb.net,Asp.net,Vb.net,我正在编写一个与外部应用程序接口的ASP.NET类。web服务器与此应用程序之间的事务流程如下所示: 我的对象将文件写入目录 外部应用程序检测并处理此文件。这可能需要1-5秒 外部应用程序将响应文件写入同一目录 我的对象检测响应文件并解析结果 外部应用程序处理我的文件所需的1-5秒是我的问题。等待文件的最直接方式似乎是: Do While Not File.Exists(f) Thread.Sleep(500) Loop 当然,Thread.Sleep()会完全锁定网站的其余部分,直到
Do While Not File.Exists(f)
Thread.Sleep(500)
Loop
当然,Thread.Sleep()会完全锁定网站的其余部分,直到外部应用程序处理该文件。显然,这不是一个可行的解决办法
如何有效地“等待”处理文件而不锁定网站的其余部分?使用-当创建文件时,它将触发您可以订阅的事件。我尝试了FileSystemWatcher,但页面加载在事件触发之前完成。这种类型的解决方案似乎更适合于应用程序级别的功能,但在我的情况下不起作用。我的背景主要是web开发,而线程加速有点让我不知所措。粗略的谷歌搜索只会让我更加困惑。您能否提供一个简单的代码示例,或者一个链接,说明如何在这种情况下使用线程?我想我理解,但我认为这并不能实现我想要它做的事情。旋转一个新线程意味着页面加载完成,然后我必须一次又一次地重新加载网页,检查线程是否完成。因为我所做的只是等待创建一个文件,所以我真的可以不用线程来完成。为了简单起见,我宁愿将其保存在单个页面加载的上下文中,但我开始怀疑,在不锁定整个站点的情况下,这是否可行。想法?@dansays-即使没有线程,也只有导致长时间运行的进程的请求应该被阻塞。只要服务器有足够的工作进程和线程可用,站点就应该仍然可以工作。使用我在帖子中提到的Thread.Sleep(500)技术,我的开发机器就会被锁死。我是否遇到了对IIS7的非服务器实例施加的人为限制?