다음을 통해 공유


Observable.FromEventPattern<TEventArgs> 메서드(Object, String)

리플렉션을 사용하여 표준 .NET 이벤트 패턴을 준수하는 .NET 이벤트를 관찰 가능한 시퀀스로 변환하여 instance 이벤트를 찾습니다.

네임스페이스:System.Reactive.Linq
어셈블리: System.Reactive(System.Reactive.dll)

Syntax

'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
    이벤트의 유형입니다.

매개 변수

  • 대상
    형식: System.Object
    변환할 이벤트를 노출하는 개체 instance.
  • eventName
    형식: System.String
    변환할 이벤트의 이름입니다.

반환 값

형식: System.IObservable<EventPattern<TEventArgs>>
반환 값은 기본 .NET 이벤트의 호출에 대한 데이터 표현을 포함하는 관찰 가능한 시퀀스입니다.

설명

FromEventPattern 연산자는 .Net 이벤트를 EventPattern<TEventArgs 시퀀스로 변환합니다>. 각 EventPattern instance 이벤트 인수 및 이벤트를 보내는 개체를 포함합니다. 이벤트 인수는 시퀀스에서 전달된 각 EventPattern의 EventArgs 속성에 제공됩니다. 이벤트를 보내는 개체는 EventPattern instance Sender 속성에 제공됩니다. 원하는 이벤트는 이벤트를 노출하는 개체를 대상 매개 변수로 전달하고 eventName 매개 변수를 이벤트 이름으로 설정하여 지정됩니다. TEventArgs 형식은 각 이벤트와 함께 전달될 이벤트 인수의 형식을 지정합니다.

예제

이 예제 코드에서는 FromEventPattern 연산자를 사용하여 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 Overload

System.Reactive.Linq 네임스페이스