【问题标题】:Triggering an async operation in from mvc controller从 mvc 控制器触发异步操作
【发布时间】:2014-02-21 01:47:13
【问题描述】:

这是我的场景。

我想创建一个 Web 端点来启动一项可能需要长时间运行的服务,可能需要 20 到 30 分钟。我想立即返回一个 HttpResponseResult 并触发服务异步运行,而不是在向客户端返回响应之前等待服务完成。

最简单的方法是什么?我不需要从服务返回任何类型的结果,只需触发它即可。

【问题讨论】:

标签: c# asp.net-mvc asynchronous


【解决方案1】:

只需使用Task.Run(() => <trigger service call> ) 运行任务并忽略返回值。唯一的缺点是它会消耗线程池中的一个线程。如果服务具有您正在调用的操作的异步版本,您可以使用TaskCompletionSource

【讨论】:

  • 哇。很简单。谢谢。
【解决方案2】:

SignalR 将是我做这种行为的选择。教程是here。

基本上,客户端调用服务器方法/操作并“完成”(您可以继续并在客户端做任何您想做的事情)。服务器完成后,它通过 RPC 将数据/通知推送到客户端。

在服务器端,您可以随心所欲地执行代码,同步或异步。

【讨论】:

  • 创建一个我可以调用的异步方法难道没有更简单的方法。我感到困惑的部分是当我完全不关心aysnc进程的结果时如何实现异步方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多