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()來獲取文件流。 –
你呢?查看我建議的文件 –