线程睡眠在c#中

时间:2013-08-12 20:08:08

标签: c# thread-sleep

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

与此同时,我希望向用户显示“请稍候”消息,因为我需要再次拨打电话,以便在我继续之前检查先前的任务是否已完成。

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

所以我的问题是thread.sleep是否会将整个Web应用程序置于睡眠状态,还是仅用于当前用户界面的应用程序?

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

我在Windows 2008 r2上使用iis 7

由于

3 个答案:

答案 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应用程序......

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

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

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