例如,我们在asp.net中的代码形式代码隐藏:
private void btnSendEmails_OnClick() { Send100000EmailsAndWaitForReplies(); }
此代码执行将被超时原因终止.为了解决这个问题,我希望看到这样的事情:
private void btnSendEmails_OnClick() { var taskId = AsyncTask.Run( () => Send100000EmailsAndWaitForReplies() ); // Store taskId for future task execution status checking. }
并且这个方法将在特殊的环境中以某种方式在w3wp.exe进程之外执行.
有没有人知道用于解决此类问题的框架/工具集?
更新:电子邮件发送方法只是我的意思的一个例子.事实上,我可能需要在asp.net工作流程之外执行许多功能.
例如,对于聚合来自几个第三方服务的数据,对其执行某些操作并将其发送回另一个服务的应用程序而言,这一点非常重要.
这已作为其他问题的一部分进行了讨论:
asp.net中的多线程
ASP.NET中的BackgroundWorker线程
没有好办法做到这一点.您不希望ASP.NET工作进程中有任何长时间运行的进程,因为它可能在您完成之前进行回收.
编写Windows服务以在后台运行,为您完成工作.将消息丢弃到MSMQ以启动任务.然后他们可以随心所欲地跑.