У метода слишком много параметров и они не входят. Каждый раз лезть в метод и смотреть - не удобно.
Что делать?
Ну, можно сделать структуру (или класс), назвать его CheckContext, добавить все эти параметры в класс в виде членов (полей/свойств) и передавать один объект такого типа вместо вот этого всего.
Изначально, я так и хотел сделать. Чтобы обработчик мог быть не один. Но потом подумал, что так может возникнуть ошибка многопоточности и всё крашнется.
Например:
internal class Class1
{
public delegate void SomeEventDelegate(object sender);
public SomeEventDelegate SomeEvent;
public void Run()
{
if (уже_запущено) { return; }
Task.Run(() =>
{
while (true)
{
SomeEvent?.Invoke(this);
Thread.Sleep(1000); //тут может быть маленькая задержка (меньше 500)
}
});
}
}
Это примерно то же самое, как если бы делегаты передавались в метод в виде структуры. То есть, значения полей структуры могут быть изменены в любой момент после передачи.
Разве так не будет ошибки, если в момент вызова делегата кто-то из другого потока подпишется или отпишется?