@@ -316,13 +316,22 @@ public async Task<SubscribeResult> SubscribeAsync(SubscribeOptions options)
316
316
317
317
// Setup the task completion source to wait for the SUBACK
318
318
var taskCompletionSource = new TaskCompletionSource < SubAckPacket > ( ) ;
319
- void TaskHandler ( object ? sender , OnSubAckReceivedEventArgs args ) => taskCompletionSource . SetResult ( args . SubAckPacket ) ;
319
+ void TaskHandler ( object ? sender , OnSubAckReceivedEventArgs args )
320
+ {
321
+ if ( args . SubAckPacket . PacketIdentifier == subscribePacket . PacketIdentifier )
322
+ {
323
+ taskCompletionSource . SetResult ( args . SubAckPacket ) ;
324
+ }
325
+ }
326
+
320
327
EventHandler < OnSubAckReceivedEventArgs > eventHandler = TaskHandler ;
321
328
this . OnSubAckReceived += eventHandler ;
322
329
323
330
// Queue the constructed packet to be sent on the wire
324
331
this . Connection . SendQueue . Enqueue ( subscribePacket ) ;
325
332
333
+
334
+
326
335
SubAckPacket subAck ;
327
336
SubscribeResult subscribeResult ;
328
337
try
@@ -423,7 +432,14 @@ public async Task<UnsubscribeResult> UnsubscribeAsync(UnsubscribeOptions unsubOp
423
432
var unsubscribePacket = new UnsubscribePacket ( unsubOptions , ( ushort ) packetIdentifier ) ;
424
433
425
434
var taskCompletionSource = new TaskCompletionSource < UnsubAckPacket > ( ) ;
426
- void TaskHandler ( object ? sender , OnUnsubAckReceivedEventArgs args ) => taskCompletionSource . SetResult ( args . UnsubAckPacket ) ;
435
+ void TaskHandler ( object ? sender , OnUnsubAckReceivedEventArgs args )
436
+ {
437
+ if ( args . UnsubAckPacket . PacketIdentifier == unsubscribePacket . PacketIdentifier )
438
+ {
439
+ taskCompletionSource . SetResult ( args . UnsubAckPacket ) ;
440
+ }
441
+ }
442
+
427
443
EventHandler < OnUnsubAckReceivedEventArgs > eventHandler = TaskHandler ;
428
444
this . OnUnsubAckReceived += eventHandler ;
429
445
0 commit comments