2013-04-22 2 views
1

Я новичок в C# и WPF. И я просто изучил асинхронное программирование на C#. Мы поднимаем событие и некоторые, где мы поймаем это событие.Когда мы должны использовать событие в C#

Преимущество этого метода заключается в том, что нам не нужно напрямую обращаться к объекту. Пример: мы загружаем данные из базы данных, а затем, после того, как метод данных загрузки завершен, он вызывает событие LoadDataSuccessfully Затем главный класс улавливает это событие и возбуждает событие UpdateGUIAfterLoadDataSuccessfully, некоторые другие элементы управления поймают это событие и обновят GUI.

Но теперь я думаю, может быть ... Я использую его слишком много в своем проекте, возможно, я слишком сильно его использую. Пожалуйста, дайте мне несколько советов, когда мы должны использовать Event и когда мы должны делать традиционный путь.

+4

Я не думаю, что вы действительно можете злоупотреблять методом, если он служит его цели. События и асинхронные действия служат тому, что вы действуете, когда у вас есть доступные данные, что очень эффективно. – ericosg

+3

Невозможно ответить ... но для комментария: попробуйте заменить события каким-то другим механизмом и посмотрите, нравится ли вам другая версия, таким образом вы можете решить, что лучше (для * вашего * случая в * вашем * проекте) , –

+1

События не являются асинхронными. Они также довольно распространены, и я предполагаю, что они присутствуют в почти любом языке ООП, поэтому я бы не назвал их нетрадиционными. Что касается того, когда их использовать - я думаю, что это то, чему вы учитесь на собственном опыте. Просто следуйте советам Алексея. –

ответ

3

События должны использоваться, если нецелесообразно использовать код, который инициирует действие, чтобы иметь непосредственное знание кода (ов), которые реагируют на это действие.

Позволяет объяснить с помощью примера

Вопрос

В вашей системе есть данные объекты отправлены вам сказать, у вас есть 50 объекта Данные, посылаемые в минуту от внешнего system.Upon получения этого вам необходимо обработать его другим объектом.

Может быть лучше использовать событие или простой вызов метода в этой ситуации?

Ответ

С одной стороны, это событие действительно звучит здесь уместно, потому что код, который обрабатывает прием данных не должен зависеть от реализации кода, который делает что-то с указанными данными. В противном случае код приема данных теперь отвечает за две вещи: получение данных и делегирование его обработки.

С другой стороны, если конкретная обработка данных напрямую связана с стихийным его, посылаемым внешним абонентом, он может сделать больше смысла, чтобы сделать его вызов функции

Посмотри на this

1

Короче «Event» является использованием, чтобы другие объекты решить, какие действия или код должны быть выполнены на триггерах событий, но я бы рекомендовал начать использовать «Команду» для получения дополнительной информации http://msdn.microsoft.com/en-IN/library/ms752308.aspx

2

Вот пара комментариев/ответы на то, что вы написали выше

«Преимущество этого метода заключается в том, что нам не нужно напрямую обращаться к методу объекта». - true, но это не означает, что вы должны делать события для всего и избегать явного вызова метода. Пример Кайла является хорошим. Также - посмотрите, как события используются в .NET по умолчанию - они используют, если только для асинхронных событий (щелчок мыши, перетаскивание мыши и т. Д.)

«Пример: мы загружаем данные из базы данных, а затем после того, как метод данных загрузки завершен , он поднимает событие LoadDataSuccessfully. Тогда основной класс поймает это событие и повысит событие UpdateGUIAfterLoadDataSuccessfully, некоторые другие элементы управления поймают это событие и обновят графический интерфейс ». - Я бы пошел только с этим методом, если время от времени необходимо обновлять данные, но даже не уверен в этом. Очень часто не использовать события для загрузки данных так, как вы описали здесь.Обратите внимание, что то, что вы написали, подразумевает, что у вас есть один поток для загрузки данных, а другой для графического интерфейса ...

«Я слишком сильно его использую в своем проекте, возможно, я слишком сильно его использую». Вероятно, вы правы на этом ,

Смежные вопросы