Добавить событие к объекту и обработать его - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть объект потока памяти, который должен обновляться через определенный интервал времени.

Когда происходит обновление объекта потока памяти, событие должно быть создано и инициировано.Затем должен быть обработчик события для обработки возникшего события.

Пожалуйста, предложите любой код или образец для ссылки.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 26 апреля 2011

Знаете ли вы логику события вообще?

Если это так, создайте событие в классе, где будет обновлен поток вашей памяти. При обновлении поднимите событие.

У потребителя класса 'зарегистрируйте событие.

И, в принципе, все?

Может быть, вы сомневаетесь в событиях в целом. Для этого я бы предложил вам прочитать MSDN, например:

1 голос
/ 26 апреля 2011

Есть несколько способов сделать это.

Самый простой способ - предложить парню, который просто избил меня до отказа, и вместо прямого вызова MemoryStream.Write (), напишите метод в вашем приложении, который вызывает MemoryStream.Write (), а затем вызывает событие, которое Вы объявляете себя вне объекта MemoryStream.

В более экзотическом, но более лаконичном углу вы могли бы осмелиться и унаследовать класс от MemoryStream, где вы добавляете свойство события и переопределяете метод Write () (или любой другой метод (методы), который вы вызываете для записи), вызовите метод Write () базового класса, а затем вызовите событие. Некоторые могут допустить такой подход, и он может оказаться не совсем идеальным или проблематичным, в зависимости от того, как вы используете MemoryStream, но он будет выполнять ту работу, которую вы хотите, и не будет поднимать событие каждый раз, когда вы пишете.

0 голосов
/ 26 апреля 2011

Хороший пример регистрации и создания пользовательских событий можно найти по адресу http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers

Обновление: ссылка не работает, я использовал archive.org , чтобы цитировать оттуда(Изменена часть повышения событий, чтобы избежать состояния гонки):

using System;

namespace CustomEvents
{
  public class Car
  {
    public delegate void OwnerChangedEventHandler(string newOwner);
    public event OwnerChangedEventHandler OwnerChanged;

    private string make;
    private string model;
    private int year;
    private string owner;

    public string CarMake
    {
      get { return this.make; }
      set { this.make = value; }
    }

    public string CarModel
    {
      get { return this.model; }
      set { this.model = value; }
    }

    public int CarYear
    {
      get { return this.year; }
      set { this.year = value; }
    }

    public string CarOwner
    {
      get { return this.owner; }
      set
      {
        this.owner = value;
        // To avoid race condition
        var ownerchanged = this.OwnerChanged;
        if (ownerchanged != null)
          ownerchanged(value);
      }
    }

    public Car()
    {
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...