首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问工作线程中的主线程未提交数据

访问工作线程中的主线程未提交数据
EN

Stack Overflow用户
提问于 2011-01-08 00:36:45
回答 1查看 75关注 0票数 0

我正在处理的代码遇到了一个问题。我的任务是获得一个包含采购订单详细信息的文件。采购订单具有单独的项目,并且每个项目都有其交货计划。PO的创建是原子的(全部或不创建)。所以所有这些都在一个事务下运行。

对于子任务,我已经有了以下方法。1. CreatePO 2. CreateItem 3. AddDeliveryScheduleToItem(ItemId)。

当我以顺序的方式执行所有这些代码时,一切都会正常工作。顺序时尚意味着我首先创建PO。其次,我一个接一个地创建PO下的所有项目。第三,我将交付计划逐个添加到每个行项目中。在这里,事务在创建PO之前开始,并在将交付计划添加到所有项目之后提交。如果出现任何错误,应用程序将回滚事务。

当添加交付计划到项目时,我从数据库中检索项目记录,以检索计划详细信息,这就是当前代码是如何编写的。

到目前一切尚好。

现在添加交付调度是一项耗时的任务,所以我们决定添加线程并并行运行添加交付调度。因此,我创建了一个名为AddDeliveryScheduleInThread()的方法,并在该方法中调用AddDeliveryScheduleToItem(ItemId)。

使用ThreadPool,我并行地触发AddDeliveryScheduleInThread()。现在,当AddDeliveryScheduleToItem(ItemId)尝试根据商品id检索商品记录时,就会出现问题。请记住,我们在事务的主线程中创建了这个项目,但它还没有提交。

当前使用Spring.NET transaction的代码,我在那里找不到太多帮助。

如何解决这个问题?请帮帮我。

我对不使用Spring.NET事务持开放态度。我现在正在研究可靠事务和可公开事务,如果这能有所帮助的话。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-01-08 01:28:18

AddDeliveryScheduleToItem(ItemId)尝试根据商品id检索商品记录。请记住,我们在事务的主线程中创建了这个项目,但它还没有提交。

我只能想到两个选择。

1)在事务提交之前不要AddDeliveryScheduleToItem(ItemId)。

2)不要把AddDeliveryScheduleToItem(ItemId)放在另一个线程上,而是让它非常快,这样你就不必把它放在另一个线程上。

让2变得非常快的简单方法是简单地将它添加到队列中,而不是整个过程。让另一个进程查看该队列,看看是否有新的项目要调度,然后调度执行长时间运行的部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4627843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档