SilverLight浏览器交互之:SilverLight用户独立存储空间的计算和扩展

概述

IsolatedStorageFile 成员
表示包含文件和目录的独立存储区。

IsolatedStorageFile.GetUserStoreForApplication 方法
获取从虚拟主机域调用的应用程序所使用的用户范围的独立存储。
域(网站)中的某个应用程序与该域中的所有其他应用程序共享组配额。
这使得同一个域中的多个应用程序可以共享一个配额。请注意,这里所说的域指的是虚拟主机域(例如 Microsoft.com),而不是应用程序域。
组配额的默认独立存储大小为 1 MB。若要增加配额,请使用 IncreaseQuotaTo 方法。
若要获取域中的所有应用程序的用户独立存储,请使用 GetUserStoreForSite 方法。

IsolatedStorageFile.Quota 属性
获取一个值,该值表示独立存储的最大可用空间量。
此属性从存储区的关联配额组获取值。初始配额为 1 MB,由域的所有应用程序共享。

IsolatedStorageFile.AvailableFreeSpace 属性
获取一个值,该值表示独立存储的可用空间量。
此属性从存储区的关联配额组获取值。由于配额可能会更改,因此不能将值缓存到内存中,而必须每次直接从磁盘中读取。

用户可以在独立空间内创建文件,如SilverLight浏览器交互之:SilverLight用户独立存储空间中文件的创建和读取

效果

点击扩展空间后

点击是后空间将变为4M

xaml代码

<Grid x:Name="LayoutRoot" Background="White">
<Canvas Background="White">
<Rectangle x:Name="maximumRectangle"
Width
="1"
Height
="20"
Fill
="#FFFFFFFF"
Stroke
="#FF000000"
Canvas.Left
="1"
Canvas.Top
="5"
RadiusX
="5"
RadiusY
="5" />
<Rectangle x:Name="currentRectangle"
Width
="1"
Height
="20"
Stroke
="#FF000000"
Canvas.Left
="1"
Canvas.Top
="5"
RadiusX
="5"
RadiusY
="5"
StrokeThickness
="0">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1.35"
StartPoint
="0.5,-0.3">
<GradientStop Color="#FF54CDEA"
Offset
="0" />
<GradientStop Color="#FF017328"
Offset
="0.5" />
<GradientStop Color="#FF54CDEA"
Offset
="1" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
<TextBlock Margin="30" x:Name="txt" Height="20" VerticalAlignment="Top"></TextBlock>
<Button Width="150"
Height
="30"
Content
="扩展空间"
Click
="Button_Click" />
</Grid>

cs代码

public MainPage()
{
InitializeComponent();

//设置Rectangle矩形尺寸来表示储存空间的大小
//IsolatedStorageFile 成员
//表示包含文件和目录的独立存储区。

//IsolatedStorageFile.GetUserStoreForApplication 方法
//获取从虚拟主机域调用的应用程序所使用的用户范围的独立存储。
//域(网站)中的某个应用程序与该域中的所有其他应用程序共享组配额。
//这使得同一个域中的多个应用程序可以共享一个配额。请注意,这里所说的域指的是虚拟主机域(例如 Microsoft.com),而不是应用程序域。
//组配额的默认独立存储大小为 1 MB。若要增加配额,请使用 IncreaseQuotaTo 方法。
//若要获取域中的所有应用程序的用户独立存储,请使用 GetUserStoreForSite 方法。

using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
{
//IsolatedStorageFile.Quota 属性
//获取一个值,该值表示独立存储的最大可用空间量。
//此属性从存储区的关联配额组获取值。初始配额为 1 MB,由域的所有应用程序共享。

//IsolatedStorageFile.AvailableFreeSpace 属性
//获取一个值,该值表示独立存储的可用空间量。
//此属性从存储区的关联配额组获取值。由于配额可能会更改,因此不能将值缓存到内存中,而必须每次直接从磁盘中读取。
double usedSpace = isoFile.Quota - isoFile.AvailableFreeSpace;
maximumRectangle.Width
= (isoFile.Quota / 10240) * 2;
currentRectangle.Width
= (usedSpace / 10240) * 2;
txt.Text
= "用户独立空间为:" + usedSpace+"KB";
}

}

private void Button_Click(object sender, RoutedEventArgs e)
{
using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
{
var newQuotaSize
= isoFile.Quota * 2;
var requestAccepted
= isoFile.IncreaseQuotaTo(newQuotaSize);
if (!requestAccepted) return;
MessageBox.Show(
"当前空间为:\n总空间:" + isoFile.Quota / (1024 * 1024) +
"M\n可用空间:" + isoFile.AvailableFreeSpace / (1024 * 1024) +
"M\n独立存储空间:" + isoFile.UsedSize / 1024 + "M");
}
}
}

大功告成!!!


作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/  联系我,非常感谢。

posted on 2011-05-09 15:50  记忆逝去的青春  阅读(2160)  评论(0编辑  收藏  举报