File tree Expand file tree Collapse file tree
Sources/TaskKit/ViewModels Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44//
55// Created by xuehui yang on 2025/12/6.
66//
7- public enum TaskEvent : Codable {
7+ public enum TaskEvent : Codable , Sendable {
88 case openPage( String )
99 case finishFeature( String )
1010 case tapButton( String )
@@ -50,21 +50,30 @@ public enum TaskEvent: Codable {
5050 }
5151}
5252
53-
5453@MainActor
55- public final class EventCenter : @unchecked Sendable {
54+ public final class EventCenter {
55+
5656 public static let shared = EventCenter ( )
5757 private init ( ) { }
5858
59- private var subscribers : [ @MainActor ( TaskEvent ) -> Void ] = [ ]
59+ private var subscribers : [ ( TaskEvent ) -> Void ] = [ ]
60+
61+ /// 外部任何线程都可以调用
62+ public nonisolated func send( _ event: TaskEvent ) {
63+ let eventCopy = event // ⭐ 关键
64+ Task { @MainActor in
65+ self . dispatch ( eventCopy)
66+ }
67+ }
68+
6069
61- public func send ( _ event: TaskEvent ) {
70+ private func dispatch ( _ event: TaskEvent ) {
6271 for handler in subscribers {
6372 handler ( event)
6473 }
6574 }
6675
67- public func subscribe( _ handler: @escaping @ MainActor @ Sendable ( TaskEvent ) -> Void ) {
76+ public func subscribe( _ handler: @escaping ( TaskEvent ) -> Void ) {
6877 subscribers. append ( handler)
6978 }
7079}
You can’t perform that action at this time.
0 commit comments