0

好的。我正在调用正在执行异步任务的外部脚本 [编辑:Web 服务]。通常需要一到两分钟才能完成。

同时,我想向用户显示“请稍候”消息,因为在继续之前我需要再次调用以检查上一个任务是否已完成。

使用计时器并不是一个好的解决方案。在我继续之前,我需要用户实际等待。

所以我的问题是 thread.sleep 是否会让整个 Web 应用程序进入睡眠状态,或者只是让当前 UI 进入睡眠状态?

我不希望其他网站访问者的 UI 挂起。我不确定这在生产环境中是如何工作的。

我在 Windows 2008 r2 上使用 iis 7

谢谢

4

3 回答 3

4

Thread.Sleep只会影响当前线程 - 但无论如何这不是你想要做的。

您应该从您的 Web 应用程序返回一个完整的响应 - 但它会启动一个 Javascript 计时器以在几秒钟内触发,然后对您的 Web 应用程序进行 AJAX 回调以检查任务是否已完成。(您应该在响应中包含某种“任务 ID”,以便服务器知道要检查哪个任务。)

如果您只是在返回响应之前休眠,则在休眠完成之前,您的用户将看不到任何消息。

于 2013-08-12T20:10:29.273 回答
1

更多信息会很好。然而:

我猜你要建立一个网站(asp.net mvc 或 webforms),因为你使用的是 iis7。只需运行服务器并让客户端使用 Ajax 调用来询问任务的状态。完成后的任务应该存储在某个地方,最好是数据库。您还可以使用 xml 或其他任何方式来保存任务 ID,或者它是否已完成。只需让 ajax 每 5 秒调用一次,直到它在完成时返回 taskid true。

于 2013-08-12T20:12:37.293 回答
1

你不应该使用 Thread.Sleep。假设这是一个网络应用程序......

一个请求应该启动任务并返回一个作业令牌。

对于另一个请求,用户应该能够检查该作业的状态(通过传递令牌)。

作业完成后,用户应该能够获得作业的结果(通过传递令牌)。

于 2013-08-12T20:12:52.800 回答