Skip to content

Commit 33de7ad

Browse files
committed
_poipoiStockDictをスレッドセーフにした
1 parent 7329e51 commit 33de7ad

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

MixchSitePlugin/CommentProvider.cs

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -336,21 +336,24 @@ private void _PoipoiStockTimer_Elapsed(object sender, System.Timers.ElapsedEvent
336336
{
337337
var unixTimestampNow = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
338338
List<string> processedKeys = new List<string>();
339-
foreach (KeyValuePair<string, Packet> _poipoiStock in _poipoiStockDict)
339+
lock (_poipoiStockDict)
340340
{
341-
if (_poipoiStock.Value.Created + _siteOptions.PoipoiKeepSeconds <= unixTimestampNow)
341+
foreach (KeyValuePair<string, Packet> _poipoiStock in _poipoiStockDict)
342342
{
343-
var messageContext = CreateMessageContext(_poipoiStock.Value, false);
344-
if (messageContext != null)
343+
if (_poipoiStock.Value.Created + _siteOptions.PoipoiKeepSeconds <= unixTimestampNow)
345344
{
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);
347351
}
348-
processedKeys.Add(_poipoiStock.Key);
349352
}
350-
}
351-
foreach (string key in processedKeys)
352-
{
353-
_poipoiStockDict.Remove(key);
353+
foreach (string key in processedKeys)
354+
{
355+
_poipoiStockDict.Remove(key);
356+
}
354357
}
355358
}
356359
#endregion //ctors
@@ -390,14 +393,17 @@ private void WebSocket_Received(object sender, Packet p)
390393
}
391394
else if ((MixchMessageType)p.Kind == MixchMessageType.PoiPoi)
392395
{
393-
if (_poipoiStockDict.ContainsKey(p.PoiPoiKey()))
394-
{
395-
var _p = _poipoiStockDict[p.PoiPoiKey()];
396-
_p.Count += p.Count;
397-
}
398-
else
396+
lock (_poipoiStockDict)
399397
{
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+
}
401407
}
402408
}
403409
else if (p.HasMessage())

0 commit comments

Comments
 (0)