1
我正在尝试在Windows Phone 8应用程序中使用定期后台任务。我想使用一个xml文件来序列化前台应用程序和后台任务之间的状态信息。Windows Phone定期任务同步异步方法
我读过你应该使用Mutex来同步对文件的访问。但是,我遇到了使用它的问题,因为我需要在使用Mutex(在读取和写入数据到文件中)的方法中调用await。这会导致我的应用程序在我调用Mutex.Release时锁定,因为它正在另一个线程上发布。任何想法如何处理?
public async Task WriteState(BackgroundTaskState state)
{
using (var m = new Mutex(false, BackgroundTaskState.MutexName))
{
try
{
m.WaitOne();
using (var stream = await GetFileStreamForWriting())
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(BackgroundTaskState));
xmlSerializer.Serialize(stream, state);
await stream.FlushAsync();
}
}
catch (Exception)
{
}
finally
{
m.ReleaseMutex();
}
}
}
当使用封装时无需调用FlushAsync。在Dispose方法中已经调用Flush。哪里是你的WP应用程序中使用的方便的文件http://codepaste.net/63vh4o –
即使我不使用FushAsync,我仍然需要调用await GetFileStreamForWriting()来获取文件流。 –
你呢?查看我建议的文件 –