当我学习 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?
提前致谢!