【问题标题】:Running a short-lived background task from MVC从 MVC 运行一个短暂的后台任务
【发布时间】:2012-09-10 14:30:44
【问题描述】:

我正在编写一个 ASP.NET MVC 3 应用程序。当用户登录时,我需要检查远程系统并从系统中获取该用户的最新数据。此任务大约需要 15 秒。

用户应该能够在登录后直接进入我的应用程序(不必等待 15 秒进行远程调用!)。当远程调用完成后,用户本地信息将被更新。

我正在考虑使用一个线程来执行此操作,在他们登录后创建它并让它运行它。但是,在阅读完之后,我担心在 MVC 中使用线程时回收等问题。我会使用异步控制器,但我不需要向用户反馈这个后台进程的状态。我关心线程是否正确,即使它们是短暂的?

【问题讨论】:

标签: c# asp.net-mvc multithreading


【解决方案1】:

...关注回收...

"...不需要向用户反馈状态..."

...短暂的...

您应该使用ThreadPool.QueueUserWorkItem 的三个原因。

【讨论】:

  • 这正是我所需要的。我希望有信心将命令抛出一个线程并继续返回页面。
【解决方案2】:

不要在网络应用程序中使用“线程”。让服务器使用“异步”调用来处理这个问题。 否则你将不得不设置一个线程池和队列慢请求。

【讨论】:

  • 我的印象是 await/async 并不是真正用于实现后台任务。 (与实现涉及长时间运行的操作而没有阻塞的顺序流相反。)
  • 它正在从另一个服务器获取数据。 AsyncController 将设置请求然后释放线程直到有响应。
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 2014-10-29
  • 2014-06-21
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多