Windows phone 8 Windows Phone ScheduledTask中的IsolatedStorage编辑
我正在从IsolatedStorage读取数据,但无法在ScheduledTask中编辑它。我如何编辑它Windows phone 8 Windows Phone ScheduledTask中的IsolatedStorage编辑,windows-phone-8,scheduled-tasks,mutex,isolatedstorage,background-task,Windows Phone 8,Scheduled Tasks,Mutex,Isolatedstorage,Background Task,我正在从IsolatedStorage读取数据,但无法在ScheduledTask中编辑它。我如何编辑它 private void StartToastTask(ScheduledTask task) { long rank = 0, difference = 0; string text = "", nickname = ""; PishtiWCF.PishtiWCFServiceClient ws = ServiceClass.GetP
private void StartToastTask(ScheduledTask task)
{
long rank = 0, difference = 0;
string text = "", nickname = "";
PishtiWCF.PishtiWCFServiceClient ws = ServiceClass.GetPishtiWCFSvc();
ws.GetUsersRankCompleted += (src, e) =>
{
try
{
if (e.Error == null)
{
difference = rank - e.Result.GeneralRank;
if (!String.IsNullOrEmpty(nickname))
{
if (difference < 0)
text = string.Format("{0}, {1} kişi seni geçti!", nickname, difference.ToString(), e.Result.GeneralRank);
else if (difference > 0)
text = string.Format("{0}, {1} kişiyi daha geçtin!", nickname, Math.Abs(difference).ToString(), e.Result.GeneralRank);
else if (e.Result.GeneralRank != 1)
text = string.Format("{0}, sıralamadaki yerin değişmedi!", nickname, e.Result.GeneralRank);
else
text = string.Format("{0}, en büyük sensin, böyle devam!", nickname);
}
else
return;
Mutex mut;
if (!Mutex.TryOpenExisting("IsoStorageMutex", out mut))
mut = new Mutex(false, "IsoStorageMutex");
mut.WaitOne();
using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = file.OpenFile("UserRanks", FileMode.Open, FileAccess.Write))
{
StreamWriter writer = new StreamWriter(stream);
writer.Write(string.Format("{0},{1}", nickname, e.Result.GeneralRank));
writer.Close();
stream.Close();
}
}
mut.ReleaseMutex();
ShellToast toast = new ShellToast();
toast.Title = "Pishti";
toast.Content = text;
toast.Show();
}
FinishTask(task);
}
catch (Exception)
{
}
};
try
{
Mutex mut;
if (!Mutex.TryOpenExisting("IsoStorageMutex", out mut))
mut = new Mutex(false, "IsoStorageMutex");
mut.WaitOne();
using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = file.OpenFile("UserRanks", FileMode.Open, FileAccess.Read))
{
using (StreamReader reader = new StreamReader(stream))
{
string temp = reader.ReadToEnd();
if (temp.Split(',').Count() > 1)
{
nickname = temp.Split(',')[0];
rank = long.Parse(temp.Split(',')[1]);
ws.GetUsersRankAsync(nickname);
}
reader.Close();
}
stream.Close();
}
}
mut.ReleaseMutex();
}
catch (Exception)
{
}
}
private void StartToastTask(ScheduledTask任务)
{
长秩=0,差=0;
字符串文本=”,昵称=”;
PishtiWCF.PishtiWCFServiceClient ws=ServiceClass.GetPishtiWCFSvc();
ws.GetUsersRankCompleted+=(src,e)=>
{
尝试
{
如果(e.Error==null)
{
差异=等级-e.Result.GeneralRank;
如果(!String.IsNullOrEmpty(昵称))
{
如果(差异<0)
text=string.Format(“{0},{1}kişi seni geçti!”,昵称,difference.ToString(),e.Result.GeneralRank);
否则,如果(差异>0)
text=string.Format(“{0},{1}kişiyi daha geçtin!”,昵称,Math.Abs(difference.ToString(),e.Result.GeneralRank);
否则如果(e.Result.GeneralRank!=1)
text=string.Format(“{0},sıralamadaki yerin değişmedi!”,昵称,e.Result.GeneralRank);
其他的
text=string.Format(“{0},en büyük sensin,böyle devam!”,昵称);
}
其他的
返回;
互斥mut;
如果(!Mutex.TryOpenExisting(“IsoStorageMutex”,out mut))
mut=新的互斥体(false,“IsoStorageMutex”);
mut.WaitOne();
使用(IsolatedStorageFile=IsolatedStorageFile.GetUserStoreForApplication())
{
使用(IsolatedStorageFileStream=file.OpenFile(“UserRanks”,FileMode.Open,FileAccess.Write))
{
StreamWriter writer=新StreamWriter(流);
Write(string.Format(“{0},{1}”,昵称,e.Result.GeneralRank));
writer.Close();
stream.Close();
}
}
mut.ReleaseMutex();
ShellToast toast=新的ShellToast();
toast.Title=“Pishti”;
toast.Content=文本;
toast.Show();
}
完成任务(task);
}
捕获(例外)
{
}
};
尝试
{
互斥mut;
如果(!Mutex.TryOpenExisting(“IsoStorageMutex”,out mut))
mut=新的互斥体(false,“IsoStorageMutex”);
mut.WaitOne();
使用(IsolatedStorageFile=IsolatedStorageFile.GetUserStoreForApplication())
{
使用(IsolatedStorageFileStream=file.OpenFile(“UserRanks”,FileMode.Open,FileAccess.Read))
{
使用(StreamReader=新StreamReader(stream))
{
string temp=reader.ReadToEnd();
如果(临时拆分(',').Count()>1)
{
昵称=临时拆分(',')[0];
rank=long.Parse(临时拆分(',')[1]);
ws.GetUsersRankAsync(昵称);
}
reader.Close();
}
stream.Close();
}
}
mut.ReleaseMutex();
}
捕获(例外)
{
}
}
我从UserRanks文件中获取rank,例如1200,但当我从WCF获取和数据时,将其编辑为1000,并希望将其写入IsolatedStorage,它不会使应用程序崩溃,但会失败
你知道为什么吗
谢谢。我用删除文件修复了它
Mutex mut;
if (!Mutex.TryOpenExisting("IsoStorageMutex", out mut))
mut = new Mutex(false, "IsoStorageMutex");
mut.WaitOne();
using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())
{
if (file.FileExists("UserRanks"))
file.DeleteFile("UserRanks");
using (IsolatedStorageFileStream stream = file.OpenFile("UserRanks", FileMode.OpenOrCreate, FileAccess.Write))
{
StreamWriter writer = new StreamWriter(stream);
writer.Write(string.Format("{0},{1}", nickname, e.Result.GeneralRank));
writer.Close();
stream.Close();
}
}
mut.ReleaseMutex();
您似乎首先写入文件,这是有道理的,但当您这样做时,您使用文件访问模式-FileMode.Open-这意味着“打开现有文件”。第一次这样做时,文件将不存在,打开将失败 您应该使用FileMode.OpenOrCreate(不言自明)或FileMode.Append(如果文件存在并查找到文件末尾),或者创建一个新文件(如果不存在)
如果你想扔掉任何预先存在的文件(删除后再创建即可),那么只需使用FileMode。创建你的捕获块为空是有原因的吗?我看到你解决了你的问题,但你说它没有崩溃,但失败了。如果catch块为空,则表示从何处开始故障排除的异常将被吞噬。将
catch(Exception)
更改为catch(Exception ex)
并将断点放低一行是一个好的开始。这样,即使您计划忽略异常,当调试期间发生异常时,应用程序也会停止并允许您检查异常。