使用SilverLight构建插件式应用程序(二)
2008-10-23 11:44:00 来源:WEB开发网首先判断本地文件是否存在,if (store.FileExists(PublicUnit.PluginConfigFile)),如果存在就使用Linq读取;
读取完成之后,就比较本地的配置文件和服务器的配置文件,如果本地的配置和服务器的配置的版本不一致或者不存在,就表示需要从服务器重新下载:
//比较是否需要下载服务器端的插件进行升级
foreach (PluginConf pServer in pluginConfsServer)
{
bool bUpdate = true;
//判断是否需要升级,
//由于我对DLinq不熟悉,暂时使用这个方法匹配
if (pluginConfsClient != null)
{
foreach (PluginConf pClient in pluginConfsClient)
{
if (pServer.filename == pClient.filename)
{
if (pServer.version == pClient.version)
{
//如果文件名字相同和版本相同,就不需要要升级
bUpdate = false;
ShowLoadPlugin(pServer);
}
}
}
}
//判断是否需要升级
if (bUpdate)
{
this.canvasProgress.Visibility = Visibility.Visible;
progressTitle.Text = "正在下载“" + pServer.titlename + "”:";
DownLoadPlugin(pServer.filename);
}
}
//所有的下载完成之后,更新本地的记录文件
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if(store.FileExists(WindCloud.Main.PublicUnit.PluginConfigFile))
{
store.DeleteFile(WindCloud.Main.PublicUnit.PluginConfigFile);
}
IsolatedStorageFileStream fileStream = store.CreateFile(WindCloud.Main.PublicUnit.PluginConfigFile);
using (StreamWriter sw = new StreamWriter(fileStream))
{
Stream s = e.Result as Stream;
s.Position = 0;
Byte[] info = new Byte[s.Length];
s.Read(info, 0, (int)s.Length);
sw.BaseStream.Write(info, 0, info.Length);
sw.Flush();
sw.Close();
}
fileStream.Close();
}
Tags:使用 SilverLight 构建
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接