【发布时间】:2012-04-30 09:25:37
【问题描述】:
这是当前功能:
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的 Web 服务在数据库中创建了一条记录。
- 我的网络服务立即将新记录 ID 返回到网站。
- 我的网站向用户显示该记录 ID。
这一直运行良好。我必须添加一个功能,以便在第 2 步之后,我的 Web 服务将调用 1 到 6 个(取决于条件)外部 Web 服务。所以它看起来像这样:
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的 Web 服务在数据库中创建了一条记录。
- 我的 Web 服务调用外部 Web 服务。合并结果并保存在数据库中。
- 我的网络服务向网站返回新的记录 ID。
- 我的网站向用户显示该记录 ID。
由于这项新功能,现在网站请求可能需要 10 分钟。所以这就是我想要实现新功能的方式。
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的 Web 服务在数据库中创建了一条记录。
- 我的 Web 服务创建一个新线程并调用该线程上的一个方法(即发即弃)。此方法将调用外部 Web 服务,合并结果并保存在数据库中。由于这将在另一个线程上,执行将在完成第 3 步之前立即转到第 4 步。
- 我的网络服务立即将新记录 ID 返回到网站。
- 我的网站向用户显示该记录 ID。
另外,我想为第 3 步中创建的线程设置一些超时,以便任务必须在假设 10 分钟内结束,如果没有中止线程。
我尝试了 ThreadPool.QueueUserWorkItem,它甚至没有被调用,因为它是后台线程。最初 Thread / Task.TaskFactory 似乎可行,但为每个请求创建一个新线程似乎不是最佳实践。
有人可以为第 3 步提供一些 VB.NET 代码/参考吗?专门在单独的线程上调用外部 Web 服务,例如触发并忘记并为该线程设置超时?
谢谢
【问题讨论】:
-
你试过什么?创建一个新线程是有据可查的,有大量的代码示例。您是否尝试过某些事情并遇到错误,或者...mattgemmell.com/2008/12/08/what-have-you-tried
标签: asp.net .net web-services vb.net-2010