Использование моих пользовательских EventArgs, таких как:
public event EventHandler SampleEvent;
из msdn например:
public class HasEvent
{
// Declare an event of delegate type EventHandler of
// MyEventArgs.
public event EventHandler SampleEvent;
public void DemoEvent(string val)
{
// Copy to a temporary variable to be thread-safe.
EventHandler temp = SampleEvent;
if (temp != null)
temp(this, new MyEventArgs(val));
}
}
У меня 2 вопроса:
1 )глядя на отмеченный код:
Я не вижу причин, по которым его следует копировать в другой параметр (относительно потоков )
. поскольку у нас есть ключ event
, никто не может коснуться его списка вызовов (нет постороннего кода для класса, который я имею в виду)
2 )Если не ошибаюсь, функция DemoEvent
должна быть виртуальной, чтобы её можно было переопределить в подклассах... (Я уверен, что где-то её видел)
странно то, что решарпер тоже не добавит виртуальный:
так что если у меня есть этот код:
это подсказывает мне:
и когда я нажимаю:
так что еще раз мои 2 вопросы:
1 )Каков сценарий, который решит эта строка EventHandler
в отношении безопасности потоков?
2 )Разве функция не должна быть virtual
? (Я уверен, что видел этот шаблон с виртуальным)