public void Start()
        {
            this.watcher = new FileDropWatcher(@"C:\droplocation", "*.snd");
            
            this.droppedSubscription = this.watcher.Dropped
                .Select(file => new ProcessFile(file.FullPath, file.Name, Guid.NewGuid()))
                .Subscribe(msg => this.Bus.SendLocal(msg));

            this.watcher.Start();
        }
		public async Task PollExisting_FileBeforeStart_StreamsDropped()
		{
			using (var watcher = new FileDropWatcher(TempPath, "Monitored.Txt"))
			{
				var firstDropped = watcher.Dropped.FirstAsync().ToTask();
				var monitoredFile = Path.Combine(TempPath, "Monitored.Txt");
				File.WriteAllText(monitoredFile, "foo");

				watcher.PollExisting();

				var dropped = await firstDropped;
				Expect(dropped.Name, Is.EqualTo("Monitored.Txt"));
				Expect(dropped.FullPath, Is.EqualTo(monitoredFile));
			}
		}
		public async Task FileRenamed_NoExistingFile_StreamsDropped()
		{
			using (var watcher = new FileDropWatcher(TempPath, "Monitored.Txt"))
			{
				var firstDropped = watcher.Dropped.FirstAsync().ToTask();
				var otherFile = Path.Combine(TempPath, "Other.Txt");
				File.WriteAllText(otherFile, "foo");
				watcher.Start();

				var monitoredFile = Path.Combine(TempPath, "Monitored.Txt");
				File.Move(otherFile, monitoredFile);

				var dropped = await firstDropped;
				Expect(dropped.Name, Is.EqualTo("Monitored.Txt"));
				Expect(dropped.FullPath, Is.EqualTo(monitoredFile));
			}
		}
        public async Task PollExisting_SecondTime_StreamsSecondTime()
        {
            using (var watcher = new FileDropWatcher(TempPath, "Monitored.Txt"))
            {
                var secondDropped = watcher.Dropped.Skip(1).FirstAsync().ToTask();
                var monitoredFile = Path.Combine(TempPath, "Monitored.Txt");
                File.WriteAllText(monitoredFile, "foo");

                watcher.PollExisting();
                watcher.PollExisting();

                var dropped = await secondDropped;
                Expect(dropped.Name, Is.EqualTo("Monitored.Txt"));
                Expect(dropped.FullPath, Is.EqualTo(monitoredFile));
            }
        }