Windows mobile 当应用程序未激活时,FileSystemWatcher失败
我正在尝试让一个应用程序(用c#编写)在另一个应用程序后面的后台运行在WindowsMobile6.1设备上(带有一个filesystemwatcher)。我已经编写了一个简单的filesystemwatcher,只要它是当前应用程序(换句话说,只要你不在它之后打开另一个程序),它就工作得很好。即使在返回实例之后,filesystemwatcher也不再工作。它使用OpenNETCF,因为.NETCF不包括文件系统监视程序 有人知道为什么这样不行吗 任何帮助都将不胜感激 这是我的密码:Windows mobile 当应用程序未激活时,FileSystemWatcher失败,windows-mobile,filesystemwatcher,opennetcf,Windows Mobile,Filesystemwatcher,Opennetcf,我正在尝试让一个应用程序(用c#编写)在另一个应用程序后面的后台运行在WindowsMobile6.1设备上(带有一个filesystemwatcher)。我已经编写了一个简单的filesystemwatcher,只要它是当前应用程序(换句话说,只要你不在它之后打开另一个程序),它就工作得很好。即使在返回实例之后,filesystemwatcher也不再工作。它使用OpenNETCF,因为.NETCF不包括文件系统监视程序 有人知道为什么这样不行吗 任何帮助都将不胜感激 这是我的密码:
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");
}
我不确定您为什么会出现这种行为,但我可以猜测操作系统只是将文件通知消息发送给活动应用程序
SDF的
FileSystemWatcher
依赖于应用程序消息泵的运行,因为它在引擎盖下使用aygshell API,aygshell使用Windows消息进行调度(Microsoft的选择,而不是我的选择)。出于几个原因,我不喜欢这样做,因此我编写了一个名为FileSystemMonitor
的替代方案,您可以在相同的名称空间和DLL以及FileSystemWatcher
中找到它。IIRC,它的工作原理并不是100%相同,但考虑到我必须使用的文件系统API,我尽可能使它接近。是的,正如我所说,它与FSW位于完全相同的DLL和命名空间中。是否可以为cf编写服务?谢谢。我们说话的时候,我正在测试显示器。结果出来了。它成功了。非常感谢您的帮助…OPENNETCF是我发现的一个更伟大的API。它允许我在CF中做以前无法做的事情。