确定。我正在调用一个正在执行异步任务的外部脚本[编辑:Web服务]。通常需要一到两分钟才能完成。
与此同时,我希望向用户显示“请稍候”消息,因为我需要再次拨打电话,以便在我继续之前检查先前的任务是否已完成。
使用计时器并不是一个好的解决方案。在我继续之前,我需要用户实际等待。
所以我的问题是thread.sleep是否会将整个Web应用程序置于睡眠状态,还是仅用于当前用户界面的应用程序?
我不希望其他网站访问者的用户界面挂起。 我不确定它在生产环境中是如何工作的。
我在Windows 2008 r2上使用iis 7
由于
答案 0 :(得分:4)
Thread.Sleep
只会影响当前的帖子 - 但这不是你想要做的。
您应该从Web应用程序返回一个完整的响应 - 但是会在几秒钟内启动Javascript计时器,然后再向您的Web应用程序发出AJAX调用以检查任务是否已完成。 (您应该在响应中包含某种“任务ID”,以便服务器知道要检查的任务。)
如果您在返回回复之前只是睡觉,那么在睡眠完成之前,您的用户将看不到任何消息。
答案 1 :(得分:1)
更多信息会很好。但是:
我猜你要建立一个网站(asp.net mvc或webforms),因为你使用的是iis7。只需运行服务器,让客户端使用Ajax调用来询问任务的状态。完成后的任务应该存储在某个地方,最好是数据库。您也可以使用xml或其他任何一个点,然后您可以保存taskid,或者它是否已完成。然后让ajax每隔5秒进行一次调用,直到它在完成时返回taskid为真。
答案 2 :(得分:1)
你不应该使用Thread.Sleep。假设这是一个Web应用程序......
一个请求应该启动任务并返回一个作业令牌。
使用另一个请求,用户应该能够检查该作业的状态(通过传递令牌)。
当作业完成后,用户应该能够获得作业的结果(通过传递令牌)。