我需要在前台(单元测试)和后台代理之间共享一个 IsolatedStorage 文件。
我有类似于以下的代码:
前景:
private Mutex _mut = new Mutex(false, “backgroundShare”);
private Task WriteToFile()
{
……….
_mut.WaitOne(100);
try{
// open and write to the file “sharedFile.del” here, then close and dispose the writer and the stream…
}
finally
{
_mut.ReleaseMutex();
}
}
后台任务:
private Mutex _mut = new Mutex(true, “backgroundShare”);
private void ReadFile()
{
…………………….
_mut.WaitOne(15);
try{
//folder.GetFileAsync(“sharedFile.del”);
……
}
finally
{
_mut.ReleaseMutex();
}
}
此代码是根据我为 WP7.x 找到的 StackOverflow 帖子。此代码对 WP8 有效吗?
此外,当我运行我的单元测试(前台应用程序)时,它有时会给我这个错误:
System.AggregateException:发生一个或多个错误。---> System.Exception:从未同步的代码块调用了对象同步方法。结果 StackTrace:
在 System.Threading.Mutex.ReleaseMutex()
虽然有时它通过但后台任务没有获得共享文件。GetFileAsync 调用导致后台代理杀死自己(至少这是我在调试器中看到的)。其他时候,它工作正常!
单元测试结构如下:
// 在此处写入共享文件 WriteToFile(); …… ScheduledActionService.LaunchForTest(MaintenanceTaskName, TimeSpan.FromMilliseconds(10)); …….. //检查后台任务是否真的读取了文件并在这里做了正确的事情……</p>
你认为这有什么问题?为什么它始终无法正常工作?任何建议都非常感谢!非常感谢!