diff --git a/Sources/ListPublisher.SnapshotPublisher.swift b/Sources/ListPublisher.SnapshotPublisher.swift index 0b04190..e78d43f 100644 --- a/Sources/ListPublisher.SnapshotPublisher.swift +++ b/Sources/ListPublisher.SnapshotPublisher.swift @@ -135,8 +135,19 @@ extension ListPublisher { func cancel() { - self.publisher.removeObserver(self) self.subscriber = nil + + if Thread.isMainThread { + + self.publisher.removeObserver(self) + } + else { + + DispatchQueue.main.async { + + self.publisher.removeObserver(self) + } + } } diff --git a/Sources/ObjectPublisher.SnapshotPublisher.swift b/Sources/ObjectPublisher.SnapshotPublisher.swift index 00a9a44..35052fa 100644 --- a/Sources/ObjectPublisher.SnapshotPublisher.swift +++ b/Sources/ObjectPublisher.SnapshotPublisher.swift @@ -135,8 +135,19 @@ extension ObjectPublisher { func cancel() { - self.publisher.removeObserver(self) self.subscriber = nil + + if Thread.isMainThread { + + self.publisher.removeObserver(self) + } + else { + + DispatchQueue.main.async { + + self.publisher.removeObserver(self) + } + } }