diff --git a/services/distributedhardwarefwkservice/src/task/disable_task.cpp b/services/distributedhardwarefwkservice/src/task/disable_task.cpp index 483ad696e11ca01f76a0de93d9743a1b659da8ee..0314c571510604f53deacf7887769f75d474ecef 100644 --- a/services/distributedhardwarefwkservice/src/task/disable_task.cpp +++ b/services/distributedhardwarefwkservice/src/task/disable_task.cpp @@ -73,14 +73,15 @@ void DisableTask::DoTaskInner() auto state = (result == DH_FWK_SUCCESS) ? TaskState::SUCCESS : TaskState::FAIL; SetTaskState(state); - /* if finish task, notify father finish */ + DHLOGD("finish disable task, remove it, id = %{public}s", GetId().c_str()); + std::string taskId = GetId(); std::shared_ptr father = GetFatherTask().lock(); + TaskBoard::GetInstance().RemoveTask(taskId); + /* if finish task, notify father finish */ if (father != nullptr) { auto offLineTask = std::static_pointer_cast(father); - offLineTask->NotifyFatherFinish(GetId()); + offLineTask->NotifyFatherFinish(taskId); } - DHLOGD("finish disable task, remove it, id = %{public}s", GetId().c_str()); - TaskBoard::GetInstance().RemoveTask(GetId()); } int32_t DisableTask::UnRegisterHardware() diff --git a/services/distributedhardwarefwkservice/src/task/meta_disable_task.cpp b/services/distributedhardwarefwkservice/src/task/meta_disable_task.cpp index 95d7c218909cbc1f96c233bb12bec1b3f26dc996..4326e47663e3f378bd267ddb365213482c86fd9c 100644 --- a/services/distributedhardwarefwkservice/src/task/meta_disable_task.cpp +++ b/services/distributedhardwarefwkservice/src/task/meta_disable_task.cpp @@ -64,14 +64,16 @@ void MetaDisableTask::DoTaskInner() auto result = Disable(); auto state = (result == DH_FWK_SUCCESS) ? TaskState::SUCCESS : TaskState::FAIL; SetTaskState(state); - /* if finish task, notify father finish */ + + DHLOGD("finish meta disable task, remove it, id = %{public}s", GetId().c_str()); + std::string taskId = GetId(); std::shared_ptr father = GetFatherTask().lock(); + TaskBoard::GetInstance().RemoveTask(taskId); + /* if finish task, notify father finish */ if (father != nullptr) { auto offLineTask = std::static_pointer_cast(father); - offLineTask->NotifyFatherFinish(GetId()); + offLineTask->NotifyFatherFinish(taskId); } - DHLOGD("finish meta disable task, remove it, id = %{public}s", GetId().c_str()); - TaskBoard::GetInstance().RemoveTask(GetId()); } int32_t MetaDisableTask::Disable()