我不能将线程逻辑放在Run方法中,run方法在数据库中执行很多操作。
像这样:void Run()
{
while (true)
{
InsertEntitiesA();
DeleteEntitiesA();
UpdateEntitiesA();
InsertEntitiesB();
DeleteEntitiesB();
UpdateEntitiesB();
InsertEntitiesC();
DeleteEntitiesC();
UpdateEntitiesC();
}
}
如果我暂停它并且线程在DeleteEntitiesB()上我希望它停在那里,然后当我恢复时我希望它从它停止的地方开始,删除线上的DeleteEntitiesB()&# 39;被拦住了。
有没有办法执行它?
我不认为有=(
Ps:就像我说的Run方法无法修改
答案 0 :(得分:0)
您可以使用Thread.Suspend和Thread.Resume执行此操作,但这通常是一个非常糟糕的主意。由于当你调用这些线程时你不知道线程在执行中的位置,你不知道它是否在任何关键时刻。如果它出现了严重的问题,那么可能会发生各种各样的破坏,这可能就是微软决定废弃这些方法的原因。
答案 1 :(得分:0)
没有线程的合作就无法做到。如果在线程持有严重锁定时暂停线程会发生什么?如果它持有一个锁,那个将要取消它的线程需要它呢?