silverlight有新版本更新时, 有的机器需要手动清除缓存才能使用新版本, 否则还会使用旧版本, 这给客户带来不友好的体验, 我的做法是把新版本Xap文件大小记录在数据库中, 登录时取出这个数据与缓存中的Xap进行比较, 如果大小相同, 则从缓存中读取, 如果不相同, 则先下载然后读取, 为什么有的就不行呢, 求解.
Private Function CheckNeedDownload() As Boolean
Dim store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
Dim path As String = System.IO.Path.Combine(strCacheDirectory, strCacheXap)
'检查需要下载的文件在当前缓存区域是否已经存在
If store.DirectoryExists(strCacheDirectory) = False Or store.FileExists(path) = False Then
Return True
Else
Dim stream As IsolatedStorageFileStream = store.OpenFile(path, FileMode.Open, FileAccess.Read)
If stream.Length.Equals(g_NewXapSize + 1) = False Then
stream.Close()
ClearExternalXapCache()
Return True
Else
stream.Close()
Return False 'False 2012-2-22 zfy 由False改为True 不检查Xap包大小,直接下载
End If
End If
End Function