如何在不使用线程逻辑的情况下暂停和恢复线程

时间:2014-07-22 18:47:36

标签: c# multithreading

我不能将线程逻辑放在Run方法中,run方法在数据库中执行很多操作。

像这样:

void Run()
{
    while (true)
    {
         InsertEntitiesA();
         DeleteEntitiesA();
         UpdateEntitiesA();

         InsertEntitiesB();
         DeleteEntitiesB();
         UpdateEntitiesB();

         InsertEntitiesC();
         DeleteEntitiesC();
         UpdateEntitiesC();
     }
}

如果我暂停它并且线程在DeleteEntitiesB()上我希望它停在那里,然后当我恢复时我希望它从它停止的地方开始,删除线上的DeleteEntitiesB()&# 39;被拦住了。

有没有办法执行它?

我不认为有=(

Ps:就像我说的Run方法无法修改

2 个答案:

答案 0 :(得分:0)

您可以使用Thread.SuspendThread.Resume执行此操作,但这通常是一个非常糟糕的主意。由于当你调用这些线程时你不知道线程在执行中的位置,你不知道它是否在任何关键时刻。如果它出现了严重的问题,那么可能会发生各种各样的破坏,这可能就是微软决定废弃这些方法的原因。

答案 1 :(得分:0)

没有线程的合作就无法做到。如果在线程持有严重锁定时暂停线程会发生什么?如果它持有一个锁,那个将要取消它的线程需要它呢?