Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET的非锁定睡眠/等待/延迟功能_Asp.net_Vb.net - Fatal编程技术网

ASP.NET的非锁定睡眠/等待/延迟功能

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()会完全锁定网站的其余部分,直到

我正在编写一个与外部应用程序接口的ASP.NET类。web服务器与此应用程序之间的事务流程如下所示:

  • 我的对象将文件写入目录
  • 外部应用程序检测并处理此文件。这可能需要1-5秒
  • 外部应用程序将响应文件写入同一目录
  • 我的对象检测响应文件并解析结果
  • 外部应用程序处理我的文件所需的1-5秒是我的问题。等待文件的最直接方式似乎是:

    Do While Not File.Exists(f)
        Thread.Sleep(500)
    Loop
    
    当然,Thread.Sleep()会完全锁定网站的其余部分,直到外部应用程序处理该文件。显然,这不是一个可行的解决办法


    如何有效地“等待”处理文件而不锁定网站的其余部分?

    使用-当创建文件时,它将触发您可以订阅的事件。

    我尝试了FileSystemWatcher,但页面加载在事件触发之前完成。这种类型的解决方案似乎更适合于应用程序级别的功能,但在我的情况下不起作用。我的背景主要是web开发,而线程加速有点让我不知所措。粗略的谷歌搜索只会让我更加困惑。您能否提供一个简单的代码示例,或者一个链接,说明如何在这种情况下使用线程?我想我理解,但我认为这并不能实现我想要它做的事情。旋转一个新线程意味着页面加载完成,然后我必须一次又一次地重新加载网页,检查线程是否完成。因为我所做的只是等待创建一个文件,所以我真的可以不用线程来完成。为了简单起见,我宁愿将其保存在单个页面加载的上下文中,但我开始怀疑,在不锁定整个站点的情况下,这是否可行。想法?@dansays-即使没有线程,也只有导致长时间运行的进程的请求应该被阻塞。只要服务器有足够的工作进程和线程可用,站点就应该仍然可以工作。使用我在帖子中提到的Thread.Sleep(500)技术,我的开发机器就会被锁死。我是否遇到了对IIS7的非服务器实例施加的人为限制?