Como: Prever de condições de espaço com o armazenamento isolado
O código que usa armazenamento isolado é restrito por um quota que especifica o tamanho máximo para o compartimento de dados no qual arquivos e diretórios de armazenamento isolado existem.Esse valor é definido pela diretiva de segurança e é configurável por administradores.Se o tamanho máximo permitido for excedido quando é feita uma tentativa para gravar dados, um IsolatedStorageException é lançado e a operação falhará.Isso ajuda a impedir ataques mal-intencionados de negação de serviço que podem fazer com que o aplicativo recuse solicitações porque o armazenamento de dados está cheio.Para ajudar você a determinar se uma tentativa de gravar determinado é provavelmente falhar por esse motivo, o armazenamento isolado disponibiliza duas propriedades somente leitura: IsolatedStorage.CurrentSize e IsolatedStorage.MaximumSize.Essas duas propriedades podem ser usadas para determinar se a gravação no armazenamento fará com que o tamanho máximo do armazenamento seja excedido.Ao usar essas propriedades, tenha em mente que o armazenamento isolado pode ser acessado simultaneamente; portanto, se você calcular a quantidade de armazenamento restante, o espaço de armazenamento pode ser consumido até o momento em que você tentar gravar no armazenamento.No entanto, isso não impede que você use o tamanho máximo do armazenamento para ajudar a determinar se o limite superior no armazenamento disponível está prestes a ser alcançado.
Outra consideração importante é que a propriedade de tamanho máximo depende evidências do conjunto para funcionar corretamente.Como resultado, este método só deve ser chamado em objetos IsolatedStorageFile criados usando GetUserStoreForAssembly(), GetUserStoreForDomain() ou GetStore().Objetos IsolatedStorageFile que foram criados de qualquer outra forma (como sendo retornados de GetEnumerator()) não retornarão um tamanho máximo preciso.
Exemplo de AnticipatingOutOfSpaceConditions
O exemplo de código a seguir obtém um armazenamento isolado, cria alguns arquivos e mede o espaço restante no armazenamento.O espaço restante é reportado em bytes.
Imports System
Imports System.IO
Imports System.IO.IsolatedStorage
Public Module modmain
Sub Main()
' Get an isolated store for user, domain, and assembly and put it into
' an IsolatedStorageFile object.
Dim isoStore As IsolatedStorageFile
isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain, Nothing, Nothing)
' Create a few placeholder files in the isolated store.
Dim aStream As New IsolatedStorageFileStream("InTheRoot.txt", FileMode.Create, isoStore)
Dim bStream As New IsolatedStorageFileStream("Another.txt", FileMode.Create, isoStore)
Dim cStream As New IsolatedStorageFileStream("AThird.txt", FileMode.Create, isoStore)
Dim dStream As New IsolatedStorageFileStream("AFourth.txt", FileMode.Create, isoStore)
Dim eStream As New IsolatedStorageFileStream("AFifth.txt", FileMode.Create, isoStore)
' Use the CurrentSize and MaximumSize methods to find remaining
' space.
' Cast that number into a long type and put it into a variable.
Dim spaceLeft As Long
spaceLeft = CLng((isoStore.MaximumSize.ToString) - isoStore.CurrentSize.ToString)
Console.WriteLine("CurrentSize: " + isoStore.CurrentSize.ToString)
Console.WriteLine("Space Left: " + spaceLeft.ToString + " (might be very large if no quota is set)")
End Sub
End Module
using System;
using System.IO;
using System.IO.IsolatedStorage;
public class CheckingSpace{
public static void Main(){
// Get an isolated store for this assembly and put it into an
// IsolatedStoreFile object.
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
// Create a few placeholder files in the isolated store.
new IsolatedStorageFileStream("InTheRoot.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("Another.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AThird.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AFourth.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AFifth.txt", FileMode.Create, isoStore);
// Use the CurrentSize and MaximumSize methods to find remaining
// space.
// Cast that number into a long type and put it into a variable.
long spaceLeft =(long)(isoStore.MaximumSize - isoStore.CurrentSize);
Console.WriteLine(spaceLeft+ " bytes of space remain in this isolated store.");
}// End of Main.
}
Consulte também
Conceitos
Como: Obter armazenamentos para o armazenamento isolado