一段时间以来,我一直在想方法来实现一个简单的任务:我的应用程序中有两个后台任务,我想通知其他人有关某些更改(只需要单向沟通),但在我的生活中,我无法找出任何有效的方法。这些都是我从网上查到的方法,但是它们都有问题:在Windows Phone 8.1中发送/接收全局通知
- 我认为我可以在应用中创建的本地文件夹一个简单的文本文件,并把通知那里。监听过程可以以某种方式订阅该文件并被通知其内容的任何变化。以前用FileSystemWatcher类可以实现此目的,但它已从Windows 8中移除。
- 然后我发现了另外一个实现上述方法的API,即QueryOptions类。但是,尽管它在商店应用程序中可用,但它在Windows Phone上不受支持。
- 我曾考虑过使用推送通知,但它们都链接到Web服务。到目前为止,我还无法找到任何方式来使用它们在本地发送和接收通知,而无需使用Web服务器。
有没有什么办法可以做到这一点?这似乎是一个非常简单的任务,但事实证明是不可能实现的。 Windows Phone上是否有其他API可以在文件内容更改时通知进程?或者有什么办法可以解决推送通知并实现这个目标?我还在一些地方看过,这些地方经常使用命名管道和套接字来实现其他平台上的这种功能,有没有什么方法可以在这里应用?
每半秒钟左右轮询一次文本文件的改变(这将是非常低效的,并引入滞后,这是我的应用程序无法容忍的),我找不出任何其他方式来实现这一点任务。
在此先感谢。
谢谢,我偶然发现了code.msdn上的这个示例,但无法理解它是如何工作的。无论如何,这个解释意味着我应该为每一种我想要发送/接收的消息都有一个不同的NamedEvent,如果我有5-6个不同的命名事件,这是否可行?因为现在我已经使用TCP流套接字实现了一个有点狡猾的通信通道,有时它会随机抛出异常,而没有明显的原因。以这种方式实现IPC会更好吗? – Ali250 2014-12-29 09:22:53
事实上,在WP8.1 RunTime应用程序中实现它似乎相当棘手。 WaitCallBack类仅在Silverlight中可用,并且[给出的链接中使用了[ThreadPool类]](http://msdn.microsoft.com/zh-cn/library/System.Threading.ThreadPool%28v=vs.110% 29.aspx)不同于[WP8.1中提供的那个](http://msdn.microsoft.com/en-us/library/windows/apps/windows.system.threading.threadpool.aspx)。 – Ali250 2014-12-29 09:42:56
'WaitCallback'和'ThreadPool'类型只是样本的一部分;它们不是真正的应用程序所需要的(WinRT中也有微小的替换)。对于每条消息,您不一定需要不同的事件 - 例如,您可以将消息写入磁盘(在共享互斥体下),然后发出单个“新消息可用”事件;这取决于你如何实现它。 – 2014-12-30 21:05:06