这是当前的功能:
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的 Web 服务在数据库中创建了一条记录。
- 我的 Web 服务立即将新的记录 ID 返回到该网站。
- 我的网站向用户显示该记录 ID。
这一直运作良好。我必须添加一个功能,以便在第 2 步之后,我的 Web 服务将调用 1 到 6 个(取决于条件)外部 Web 服务。所以它看起来像这样:
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的网络服务在数据库中创建了一条记录。
- 我的网络服务调用外部网络服务。合并结果并保存在数据库中。
- 我的网络服务将新的记录 ID 返回到网站。
- 我的网站向用户显示该记录 ID。
由于这项新功能,现在网站请求可能需要 10 分钟。所以这就是我想实现新功能的方式。
- 我的网站同步调用我的 ASP.NET Web 服务。
- 我的网络服务在数据库中创建了一条记录。
- 我的 Web 服务创建一个新线程并在该线程上调用一个方法(即发即弃)。此方法将调用外部 Web 服务,合并结果并保存在数据库中。由于这将在另一个线程上,执行将在完成第 3 步之前立即转到第 4 步。
- 我的 Web 服务立即将新的记录 ID 返回到该网站。
- 我的网站向用户显示该记录 ID。
另外,我想为步骤 3 中创建的线程设置一些超时,以便任务必须在假设 10 分钟内结束,如果没有中止线程。
我尝试了 ThreadPool.QueueUserWorkItem,它甚至没有被调用,因为它是后台线程。最初 Thread / Task.TaskFactory 似乎可行,但为每个请求创建一个新线程似乎不是最佳实践。
有人可以为第 3 步提供一些 VB.NET 代码/参考吗?专门在单独的线程上调用外部 Web 服务,例如触发并忘记并为该线程设置超时?
谢谢