@@ -336,21 +336,24 @@ private void _PoipoiStockTimer_Elapsed(object sender, System.Timers.ElapsedEvent
336
336
{
337
337
var unixTimestampNow = ( int ) ( DateTime . UtcNow . Subtract ( new DateTime ( 1970 , 1 , 1 ) ) ) . TotalSeconds ;
338
338
List < string > processedKeys = new List < string > ( ) ;
339
- foreach ( KeyValuePair < string , Packet > _poipoiStock in _poipoiStockDict )
339
+ lock ( _poipoiStockDict )
340
340
{
341
- if ( _poipoiStock . Value . Created + _siteOptions . PoipoiKeepSeconds <= unixTimestampNow )
341
+ foreach ( KeyValuePair < string , Packet > _poipoiStock in _poipoiStockDict )
342
342
{
343
- var messageContext = CreateMessageContext ( _poipoiStock . Value , false ) ;
344
- if ( messageContext != null )
343
+ if ( _poipoiStock . Value . Created + _siteOptions . PoipoiKeepSeconds <= unixTimestampNow )
345
344
{
346
- MessageReceived ? . Invoke ( this , messageContext ) ;
345
+ var messageContext = CreateMessageContext ( _poipoiStock . Value , false ) ;
346
+ if ( messageContext != null )
347
+ {
348
+ MessageReceived ? . Invoke ( this , messageContext ) ;
349
+ }
350
+ processedKeys . Add ( _poipoiStock . Key ) ;
347
351
}
348
- processedKeys . Add ( _poipoiStock . Key ) ;
349
352
}
350
- }
351
- foreach ( string key in processedKeys )
352
- {
353
- _poipoiStockDict . Remove ( key ) ;
353
+ foreach ( string key in processedKeys )
354
+ {
355
+ _poipoiStockDict . Remove ( key ) ;
356
+ }
354
357
}
355
358
}
356
359
#endregion //ctors
@@ -390,14 +393,17 @@ private void WebSocket_Received(object sender, Packet p)
390
393
}
391
394
else if ( ( MixchMessageType ) p . Kind == MixchMessageType . PoiPoi )
392
395
{
393
- if ( _poipoiStockDict . ContainsKey ( p . PoiPoiKey ( ) ) )
394
- {
395
- var _p = _poipoiStockDict [ p . PoiPoiKey ( ) ] ;
396
- _p . Count += p . Count ;
397
- }
398
- else
396
+ lock ( _poipoiStockDict )
399
397
{
400
- _poipoiStockDict [ p . PoiPoiKey ( ) ] = p ;
398
+ if ( _poipoiStockDict . ContainsKey ( p . PoiPoiKey ( ) ) )
399
+ {
400
+ var _p = _poipoiStockDict [ p . PoiPoiKey ( ) ] ;
401
+ _p . Count += p . Count ;
402
+ }
403
+ else
404
+ {
405
+ _poipoiStockDict [ p . PoiPoiKey ( ) ] = p ;
406
+ }
401
407
}
402
408
}
403
409
else if ( p . HasMessage ( ) )
0 commit comments