Используйте @
(оператор управления ошибкой .) Это говорит, что php не выводит предупреждения в случае ошибок.
eval("\$result = @($expresion);");
if ($result == 0) {
// do division by zero handling
} else {
// it's all good
}
ConcurrentBag
является потокобезопасным, но ваш код не является:
if (!SystemNames.Contains(name))
{
SystemNames.Add(name);
}
Contains
будет выполняться потокобезопасным образом, затем Add
также будет выполняться потокобезопасным , но у вас нет гарантии, что товар не был добавлен между ними.
Для ваших нужд я рекомендую использовать ConcurrentDictionary
. Просто игнорируйте значение, так как оно вам не понадобится.
var SystemNames = new ConcurrentDictionary<string, bool>();
Затем используйте метод TryAdd
, чтобы выполнить «если не содержит, то добавить» в одной атомарной операции:
SystemNames.TryAdd(name, true);