Поделиться через


Метод TEventArgs> Observable.FromEventPattern<(object, string)

Преобразует событие .NET, соответствующее стандартному шаблону событий .NET, в наблюдаемую последовательность, используя отражение для поиска события экземпляра.

Пространство имен:System.Reactive.Linq
Сборки: System.Reactive (в System.Reactive.dll)

Синтаксис

'Declaration
Public Shared Function FromEventPattern(Of TEventArgs As EventArgs) ( _
    target As Object, _
    eventName As String _
) As IObservable(Of EventPattern(Of TEventArgs))
'Usage
Dim target As Object
Dim eventName As String
Dim returnValue As IObservable(Of EventPattern(Of TEventArgs))

returnValue = Observable.FromEventPattern(target, _
    eventName)
public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TEventArgs>(
    Object target,
    string eventName
)
where TEventArgs : EventArgs
public:
generic<typename TEventArgs>
where TEventArgs : EventArgs
static IObservable<EventPattern<TEventArgs>^>^ FromEventPattern(
    Object^ target, 
    String^ eventName
)
static member FromEventPattern : 
        target:Object * 
        eventName:string -> IObservable<EventPattern<'TEventArgs>>  when 'TEventArgs : EventArgs
JScript does not support generic types and methods.

Параметры типа

  • TEventArgs
    Тип события.

Параметры

  • target
    Тип: System.Object
    Экземпляр объекта, предоставляющий событие для преобразования.
  • eventName
    Тип: System.String
    Имя преобразуемого события.

Возвращаемое значение

Тип: System.IObservable<EventPattern<TEventArgs>>
Возвращаемое значение — это наблюдаемая последовательность, содержащая представления данных о вызовах базового события .NET.

Комментарии

Оператор FromEventPattern преобразует событие .NET в последовательность EventPattern<TEventArgs>. Каждый экземпляр EventPattern содержит аргументы события и объект, отправляя событие. Аргументы события предоставляются в свойстве EventArgs каждого объекта EventPattern, доставленного в последовательности. Объект, отправляя событие, предоставляется в свойстве Sender экземпляра EventPattern. Требуемое событие задается путем передачи объекта, который предоставляет событие в качестве целевого параметра, и путем задания для параметра eventName имени события. Тип TEventArgs указывает тип аргументов события, которые будут доставляться с каждым событием.

Примеры

В этом примере кода демонстрируется использование оператора FromEventPattern для прослушивания событий Create, Rename и Delete в System.IO.FileSystemWatcher. В примере отслеживают изменения в папке C:\Users\Public и записываются события в окно консоли.

using System;
using System.Reactive.Linq;
using System.Reactive;
using System.IO;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************************************//
      //*** Create a FileSystemWatcher to watch the C:\Users\Public directory using the default NotifyFilter watching for ***//
      //*** changes to any type of file.                                                                                  ***//
      //*********************************************************************************************************************//

      FileSystemWatcher fsw = new FileSystemWatcher(@"C:\Users\Public", "*.*");
      fsw.EnableRaisingEvents = true;


      //***************************************************************************************//
      //*** Use the FromEventPattern operator to setup a subscription to the Created event. ***//
      //***************************************************************************************//

      IObservable<EventPattern<FileSystemEventArgs>> fswCreated = Observable.FromEventPattern<FileSystemEventArgs>(fsw, "Created");
      fswCreated.Subscribe(pattern => Console.WriteLine("{0} was created in {1}.", pattern.EventArgs.Name, ((FileSystemWatcher)pattern.Sender).Path));


      //***************************************************************************************//
      //*** Use the FromEventPattern operator to setup a subscription to the Renamed event. ***//
      //***************************************************************************************//

      IObservable<EventPattern<RenamedEventArgs>> fswRenamed = Observable.FromEventPattern<RenamedEventArgs>(fsw, "Renamed");
      fswRenamed.Subscribe(pattern => Console.WriteLine("{0} was renamed to {1} in {2}.", pattern.EventArgs.OldName, 
                                                        pattern.EventArgs.Name, ((FileSystemWatcher)pattern.Sender).Path));


      //***************************************************************************************//
      //*** Use the FromEventPattern operator to setup a subscription to the Deleted event. ***//
      //***************************************************************************************//

      IObservable<EventPattern<FileSystemEventArgs>> fswDeleted = Observable.FromEventPattern<FileSystemEventArgs>(fsw, "Deleted");
      fswDeleted.Subscribe(pattern => Console.WriteLine("{0} was deleted in {1}.", pattern.EventArgs.Name, ((FileSystemWatcher)pattern.Sender).Path));


      Console.WriteLine("Press ENTER to exit...\n");
      Console.ReadLine();
    }
  }
}

В следующих выходных данных показано выполнение примера кода для создания нового текстового файла в каталоге C:\Users\Public. Файл будет переименован в ExFile.txt, а затем удаляется.

Press ENTER to exit...

New Text Document.txt was created in C:\Users\Public.
New Text Document.txt was renamed to ExFile.txt in C:\Users\Public.
ExFile.txt was deleted in C:\Users\Public.

См. также:

Ссылка

Наблюдаемый класс

Перегрузка FromEventPattern

Пространство имен System.Reactive.Linq