other_letter: у меня стаж почти 10 лет... нет статьи и ущерба = нет дела. в любом случае формальные признаки преступления (соответствие какой либо статье) должны быть. А ущерб даже не материальный может быть подтвержден.
если следы ведут за границу - то писать нет смысла. если материального ущерба нет, то тоже нет смысла. а так поидее - достаточно просто обратится в органы и написать заявление по существу. там по необходимости лицо, которое будет этим заниматься - затребует необходимую информацию от вас.
его желание понятно... истребуйте себе компенсацию за хлопоты и умойте руки, сохранив лицо. если фрилансер ваш и надежный то можете сделать бяку заказчику....
if (oCollectDP.Any(e => e.UserName != dp.UserName && e.IpAddress != dp.IpAddress )) oCollectDP.Add(dp);
если коллекция имеет хоть 1-н элемент отличный от добавляемого, то добавляем его в коллекцию.
потому как вы на каждой итерации из рабочего потока создаете еще поток, а в нем, возвращаетесь в основной где и добавляете элемент.
чтобы не было дублирования желательно в своем классе переопределить методы сравнения элементов и перед добавлением в коллекцию производить проверку на наличие такого же элемента в коллекции.