Megosztás a következőn keresztül:


Útmutató: A helykisüllyedés várható állapota izolált tárolással

Az izolált tárterületet használó kódot egy kvóta korlátozza, amely meghatározza annak az adattérnek a maximális méretét, amelyben az izolált tárolófájlok és könyvtárak léteznek. A kvótát biztonsági szabályzat határozza meg, és a rendszergazdák konfigurálhatják. Ha az adatok írása során túllépi a megengedett maximális méretet, kivétel lép fel, IsolatedStorageException és a művelet meghiúsul. Ez segít megelőzni a szolgáltatásmegtagadással kapcsolatos rosszindulatú támadásokat, amelyek miatt az alkalmazás elutasíthatja a kéréseket, mert az adattárolás megtelt.

Annak megállapításához, hogy egy adott írási kísérlet valószínűleg emiatt meghiúsul-e, az IsolatedStorage osztály három írásvédett tulajdonságot biztosít: AvailableFreeSpace, UsedSizeés Quota. Ezekkel a tulajdonságokat használva megállapíthatja, hogy az áruházba való írás az áruház maximális megengedett méretének túllépéséhez vezet-e. Ne feledje, hogy az elkülönített tárolók egyidejűleg is elérhetők; Ezért amikor kiszámítja a fennmaradó tárterület mennyiségét, a tárterületet a tárolóba való írás idejére használhatja fel. Az áruház maximális méretével azonban meghatározhatja, hogy a rendelkezésre álló tárterület felső korlátja hamarosan eléri-e a korlátot.

A Quota tulajdonság a szerelvény megfelelő működéséhez szükséges bizonyítékoktól függ. Ezért ezt a tulajdonságot csak a , GetUserStoreForDomainvagy GetStore metódus használatával GetUserStoreForAssemblylétrehozott objektumokon IsolatedStorageFile kell lekérni. IsolatedStorageFile a más módon létrehozott objektumok (például a GetEnumerator metódusból visszaadott objektumok) nem ad vissza pontos maximális méretet.

Példa

Az alábbi példakód egy elkülönített tárolót szerez be, létrehoz néhány fájlt, és lekéri a tulajdonságot AvailableFreeSpace . A fennmaradó terület bájtban lesz jelentve.

using namespace System;
using namespace System::IO;
using namespace System::IO::IsolatedStorage;

public ref 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, (Type ^)nullptr, (Type ^)nullptr);

        // Create a few placeholder files in the isolated store.
        gcnew IsolatedStorageFileStream("InTheRoot.txt", FileMode::Create, isoStore);
        gcnew IsolatedStorageFileStream("Another.txt", FileMode::Create, isoStore);
        gcnew IsolatedStorageFileStream("AThird.txt", FileMode::Create, isoStore);
        gcnew IsolatedStorageFileStream("AFourth.txt", FileMode::Create, isoStore);
        gcnew IsolatedStorageFileStream("AFifth.txt", FileMode::Create, isoStore);

        Console::WriteLine(isoStore->AvailableFreeSpace + " bytes of space remain in this isolated store.");
    } // End of Main.
};

int main()
{
    CheckingSpace::Main();
}
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);

        Console.WriteLine(isoStore.AvailableFreeSpace + " bytes of space remain in this isolated store.");
    } // End of Main.
}
Imports System.IO
Imports System.IO.IsolatedStorage

Public Class CheckingSpace
    Public Shared Sub Main()
        ' Get an isolated store for this assembly and put it into an
        ' IsolatedStoreFile object.
        Dim isoStore As IsolatedStorageFile = _
            IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
            IsolatedStorageScope.Assembly, 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)

        Console.WriteLine(isoStore.AvailableFreeSpace + " bytes of space remain in this isolated store.")
    End Sub
End Class

Lásd még