@@ -28,16 +28,18 @@ public class MaaTasker : MaaCommon, IMaaTasker<MaaTaskerHandle>
2828 /// </remarks>
2929 protected internal static ConcurrentDictionary < MaaTaskerHandle , MaaTasker > Instances { get ; } = [ ] ;
3030
31+ #pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
3132 [ SetsRequiredMembers ]
3233 internal MaaTasker ( MaaTaskerHandle handle )
3334 {
3435 SetHandle ( handle , needReleased : false ) ;
35- Resource = new MaaResource ( MaaTaskerGetResource ( handle ) ) ;
36- Controller = new MaaController ( MaaTaskerGetController ( handle ) ) ;
36+ _resource = new MaaResource ( MaaTaskerGetResource ( handle ) ) ;
37+ _controller = new MaaController ( MaaTaskerGetController ( handle ) ) ;
3738 DisposeOptions = DisposeOptions . None ;
3839 Toolkit = MaaToolkit . Shared ;
3940 Utility = MaaUtility . Shared ;
4041 }
42+ #pragma warning restore CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
4143
4244 /// <summary>
4345 /// Creates a <see cref="MaaTasker"/> instance.
@@ -80,18 +82,13 @@ public MaaTasker(MaaController controller, MaaResource resource, DisposeOptions
8082 /// <inheritdoc/>
8183 protected override void Dispose ( bool disposing )
8284 {
83- // Cannot destroy Instance before disposing Controller and Resource.
84-
8585 if ( DisposeOptions . HasFlag ( DisposeOptions . Controller ) )
86- {
8786 Controller . Dispose ( ) ;
88- }
8987
9088 if ( DisposeOptions . HasFlag ( DisposeOptions . Resource ) )
91- {
9289 Resource . Dispose ( ) ;
93- }
9490
91+ _ = Instances . TryRemove ( new KeyValuePair < MaaTaskerHandle , MaaTasker > ( Handle , this ) ) ;
9592 base . Dispose ( disposing ) ;
9693 }
9794
@@ -122,6 +119,9 @@ public bool SetOption<T>(TaskerOption opt, T value)
122119#pragma warning restore
123120 }
124121
122+ private MaaResource _resource = null ! ;
123+ private MaaController _controller = null ! ;
124+
125125 IMaaResource IMaaTasker . Resource
126126 {
127127 get => Resource ;
@@ -143,14 +143,14 @@ public required MaaResource Resource
143143 get
144144 {
145145 if ( ! IsInvalid )
146- _ = MaaTaskerGetResource ( Handle ) . ThrowIfNotEquals ( field . Handle , MaaInteroperationException . ResourceModifiedMessage ) ;
147- return field ;
146+ _ = MaaTaskerGetResource ( Handle ) . ThrowIfNotEquals ( _resource . Handle , MaaInteroperationException . ResourceModifiedMessage ) ;
147+ return _resource ;
148148 }
149149 set
150150 {
151151 ArgumentNullException . ThrowIfNull ( value ) ;
152152 _ = MaaTaskerBindResource ( Handle , value . Handle ) . ThrowIfFalse ( MaaInteroperationException . ResourceBindingFailedMessage ) ;
153- field = value ;
153+ _resource = value ;
154154 }
155155 }
156156
@@ -163,14 +163,14 @@ public required MaaController Controller
163163 get
164164 {
165165 if ( ! IsInvalid )
166- _ = MaaTaskerGetController ( Handle ) . ThrowIfNotEquals ( field . Handle , MaaInteroperationException . ControllerModifiedMessage ) ;
167- return field ;
166+ _ = MaaTaskerGetController ( Handle ) . ThrowIfNotEquals ( _controller . Handle , MaaInteroperationException . ControllerModifiedMessage ) ;
167+ return _controller ;
168168 }
169169 set
170170 {
171171 ArgumentNullException . ThrowIfNull ( value ) ;
172172 _ = MaaTaskerBindController ( Handle , value . Handle ) . ThrowIfFalse ( MaaInteroperationException . ControllerBindingFailedMessage ) ;
173- field = value ;
173+ _controller = value ;
174174 }
175175 }
176176
0 commit comments