1

我正在使用一个后台代理 (SchedulerTaskAgent) 来更新我的应用程序的 IsolatedStorageSettings 中的一些键。一切都很好。

当我的应用程序启动时,它首先会删除 bgagent。

有一种情况是我的主应用程序在 bgagent 运行时启动,所以当我的主应用程序删除 bgagent 然后尝试获取 IsolatedStorageSettings 的句柄时。在此之后有 3 种情况:i)句柄被返回,一切正常 ii)句柄被返回,但其中不存在键值,就像什么都没有(但有数据) iii)异常,因为它仍然被使用另一个线程

我可以处理选项 1 和 3,但不能处理选项 2。有谁知道为什么会这样?当我为我的代理调用 .Remove 时,我想它需要一些时间来取消它并删除它。

如何确保我的应用程序在 bgagent 停止并完全释放资源后启动其工作?

谢谢

4

2 回答 2

1

你不能。

我听说它建议您不应该出于这个原因从 backgroundAgents 写信给 IsolatedStorageSettings。

如果您确实必须从后台代理与您的应用程序进行通信,那么我建议您写入独立存储中的一个单独文件,该应用程序只能读取该文件。确保在正确读取和写入时锁定文件。

于 2011-08-09T14:50:04.890 回答
0

谢谢马特这是一种方法,但我在这里找到了最好的方法http://forums.create.msdn.com/forums/p/86455/519826.aspx 建议使用命名互斥锁。

于 2011-08-10T10:42:40.120 回答