Observable.FromEventPattern<TEventArgs> メソッド (Object, String)
リフレクションを使用してインスタンス イベントを検索し、標準の .NET イベント パターンに準拠する .NET イベントを監視可能なシーケンスに変換します。
Namespace: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 インスタンスには、イベント引数と、イベントを送信するオブジェクトが含まれています。 イベント引数は、シーケンスで配信される各 EventPattern の EventArgs プロパティで提供されます。 イベントを送信するオブジェクトは、EventPattern インスタンスの Sender プロパティで提供されます。 目的のイベントを指定するには、イベントを公開するオブジェクトを ターゲット パラメーターとして渡し、 eventName パラメーターをイベントの名前に設定します。 TEventArgs 型は、各イベントで配信されるイベント引数の型を指定します。
例
このコード例では、FromEventPattern 演算子を使用して、System.IO.FileSystemWatcher の Create、Rename、Delete イベントをリッスンする方法を示します。 この例では、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.