From 08ca8a878243975ea41c97a4c9798a17e9fd413b Mon Sep 17 00:00:00 2001 From: jiangminsen Date: Thu, 31 Aug 2023 19:32:32 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20786fec3=20from=20https://gitee.com/jian?= =?UTF-8?q?gminsen/bundlemanager=5Fbundle=5Ftool/pulls/47=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dbm=E7=A8=B3=E5=AE=9A=E6=80=A7=E9=97=AE=E9=A2=98#I7XLHF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangminsen --- frameworks/include/status_receiver_impl.h | 2 ++ frameworks/src/status_receiver_impl.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/frameworks/include/status_receiver_impl.h b/frameworks/include/status_receiver_impl.h index 0c7531b..b69bfb3 100644 --- a/frameworks/include/status_receiver_impl.h +++ b/frameworks/include/status_receiver_impl.h @@ -34,6 +34,8 @@ public: private: mutable std::promise resultMsgSignal_; int32_t waittingTime_; + bool isSetValue = false; + std::mutex setValueMutex_; DISALLOW_COPY_AND_MOVE(StatusReceiverImpl); }; } // namespace AppExecFwk diff --git a/frameworks/src/status_receiver_impl.cpp b/frameworks/src/status_receiver_impl.cpp index 05e6ee4..7d6cef7 100644 --- a/frameworks/src/status_receiver_impl.cpp +++ b/frameworks/src/status_receiver_impl.cpp @@ -41,7 +41,13 @@ StatusReceiverImpl::~StatusReceiverImpl() void StatusReceiverImpl::OnFinished(const int32_t resultCode, const std::string &resultMsg) { APP_LOGI("on finished result is %{public}d, %{public}s", resultCode, resultMsg.c_str()); - resultMsgSignal_.set_value(resultCode); + std::lock_guard lock(setValueMutex_); + if (!isSetValue) { + isSetValue = true; + resultMsgSignal_.set_value(resultCode); + } else { + APP_LOGW("resultMsgSignal_ is set"); + } } void StatusReceiverImpl::OnStatusNotify(const int progress) -- Gitee