使用反射查找实例事件,将符合标准 .NET 事件模式的 .NET 事件转换为可观测序列。
              Namespace:System.Reactive.Linq
              装配: System.Reactive.dll) 中的 System.Reactive (
语法
'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
事件的类型。 
parameters
- 目标
类型: System.Object
公开要转换的事件的对象实例。 
- eventName
类型:System.String
要转换的事件的名称。 
返回值
类型: System.IObservable<EventPattern<TEventArgs>>
返回值是一个可观察序列,其中包含基础 .NET 事件调用的数据表示形式。
备注
FromEventPattern 运算符将 .Net 事件转换为 EventPattern<TEventArgs> 序列。 每个 EventPattern 实例都包含事件参数和发送事件的对象。 事件参数在序列中传递的每个 EventPattern 的 EventArgs 属性中提供。 发送事件的对象在 EventPattern 实例的 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.