私はRx(リアクティブエクステンション)を学んでいるので、与えられた2つのコードの違いを知りたいです:
コード1
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"C:\Logs", "*.*");
watcher.EnableRaisingEvents = true;
var source = Observable.FromEvent<FileSystemEventHandler, FileSystemEventArgs>(handler =>
{
FileSystemEventHandler fsHandler = (sender, e) =>
{
handler(e);
};
return fsHandler;
},
fsHandler => watcher.Created += fsHandler,
fsHandler => watcher.Created -= fsHandler
);
source.Subscribe(x => Console.WriteLine(x.Name + "is created"));
Console.Read();
}
コード2
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"C:\Logs", "*.*");
watcher.EnableRaisingEvents = true;
watcher.Created += watcher_Created;
Console.Read();
}
static void watcher_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name.ToString());
}
同じ結果が得られるため、上記の2つのコードの違いは何ですか?
コア部分を調べて、両方のコード行が別々のスレッドで実行されることを発見した場合でも、これらの違いと、そのようなシナリオでRxを使用する理由は何ですか?
前もって感謝します!