2012-12-21 42 views
1

我正試圖讓應用程序(用C#編寫)在另一個應用程序後面的後臺(使用filesystemwatcher)在Windows Mobile 6.1設備上運行。我寫了一個簡單的filesystemwatcher,只要它當前的應用程序(換句話說,只要你不打開另一個程序)就可以工作。即使在返回實例後,文件系統監視器也不再起作用。它使用OpenNETCF作爲.net cf不包括文件系統觀察器。當應用程序未處於活動狀態時,FileSystemWatcher失敗

任何人都知道爲什麼這不會工作?

任何幫助將不勝感激。

這裏是我的代碼:

private void Form1_Load(object sender, EventArgs e) 
    { 

     OpenNETCF.IO.FileSystemWatcher f = new OpenNETCF.IO.FileSystemWatcher(@"c:\happydays", "*.*"); 
     f.IncludeSubdirectories = true; 
     f.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | 
         NotifyFilters.FileName | NotifyFilters.DirectoryName; 

     f.Created += new FileSystemEventHandler(File_Created);         
     f.EnableRaisingEvents = true; 
    } 

    private void File_Created(object sender, OpenNETCF.IO.FileSystemEventArgs e) 
    { 
MessageBox.Show("File Created"); 
    } 

回答

2

我不能肯定,爲什麼你會得到這種行爲,但我可以大膽地猜測操作系統正在調度文件通知消息僅活動應用程序。

SDF的FileSystemWatcher依賴應用程序消息泵來運行,因爲它使用引擎蓋下的aygshell API,而aygshell使用Windows消息進行分派(Microsoft的選擇,而不是我的)。我之所以不喜歡這個,是因爲我寫了一個名爲FileSystemMonitor的替代品,你可以在同一個命名空間和DLL中找到它,並且可以使用FileSystemWatcher。 IIRC,它不能100%完全相同,但是我已經儘可能地接近了我必須使用的文件系統API。

+0

這是在OpenNETCF? –

+0

是的,正如我所說,它與FSW完全相同的DLL和名稱空間。 – ctacke

+0

是否有可能只爲cf寫一個服務? –

相關問題