Udostępnij za pośrednictwem


Dane pamięci podręcznej

Obiekty danych można buforować w dostosowywaniu na poziomie dokumentu, aby uzyskać dostęp do danych w trybie offline lub bez otwierania programu Microsoft Office Word lub Microsoft Office Excel. Aby buforować obiekt, obiekt musi mieć typ danych spełniający określone wymagania. Wiele typowych typów danych w programie .NET Framework spełnia te wymagania, w tym String, DataSeti DataTable.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu dla programów Excel i Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Istnieją dwa sposoby dodawania obiektu do pamięci podręcznej danych:

Wymagania dotyczące buforowania obiektów danych

Aby buforować obiekt danych w rozwiązaniu, obiekt musi spełniać następujące wymagania:

  • Być polem publicznym odczytu/zapisu lub właściwością elementu hosta, na przykład ThisDocument klasami lub ThisWorkbook .

  • Nie jest indeksatorem ani inną właściwością sparametryzowaną.

    Ponadto obiekt danych musi być serializowalny przez klasę XmlSerializer , co oznacza, że typ obiektu musi mieć następujące cechy:

  • Być typem publicznym.

  • Nie ma publicznego konstruktora bez parametrów.

  • Nie wykonuj kodu wymagającego dodatkowych uprawnień zabezpieczeń.

  • Uwidaczniaj tylko właściwości publiczne odczytu/zapisu (inne właściwości zostaną zignorowane).

  • Nie uwidaczniaj tablic wielowymiarowych (zagnieżdżone tablice są akceptowane).

  • Nie zwracaj interfejsów z właściwości i pól.

  • Nie implementuj IDictionary , jeśli kolekcja.

    Podczas buforowania obiektu danych środowisko uruchomieniowe Visual Studio Tools dla pakietu Office serializuje obiekt do ciągu XML przechowywanego w niestandardowej części XML w dokumencie. Aby uzyskać więcej informacji, zobacz Omówienie niestandardowych części XML.

Limity rozmiaru danych w pamięci podręcznej

Istnieją pewne ograniczenia dotyczące całkowitej ilości danych, które można dodać do pamięci podręcznej danych w dokumencie oraz do rozmiaru dowolnego pojedynczego obiektu w pamięci podręcznej danych. Jeśli przekroczysz te limity, aplikacja może zostać nieoczekiwanie zamknięta, gdy dane zostaną zapisane w pamięci podręcznej danych.

Aby uniknąć tych limitów, postępuj zgodnie z następującymi wytycznymi:

  • Nie należy dodawać żadnego obiektu większego niż 10 MB do pamięci podręcznej danych.

  • Nie dodawaj więcej niż 100 MB całkowitej ilości danych do pamięci podręcznej danych w jednym dokumencie.

    Są to przybliżone wartości. Dokładne limity zależą od kilku czynników, w tym dostępnej pamięci RAM i liczby uruchomionych procesów.

Kontrolowanie zachowania buforowanych obiektów

Aby uzyskać większą kontrolę nad zachowaniem buforowanego obiektu, można zaimplementować ICachedType interfejs w typie buforowanego obiektu. Możesz na przykład zaimplementować ten interfejs, jeśli chcesz kontrolować sposób powiadamiania użytkownika o zmianie obiektu. Przykłady kodu, które pokazują, jak zaimplementować ICachedTypeprogram , zobacz klasę ControlCollection w przykładzie przykładowych kontrolek dynamicznych programu Excel i przykładowych kontrolek dynamicznych programu Word w przykładach dla deweloperów pakietu Office i przewodnikach.

Utrwalanie zmian w buforowanych danych w dokumentach chronionych hasłem

W przypadku buforowania obiektów danych w dokumencie chronionym hasłem zmiany w buforowanych danych nie zostaną zapisane. Zmiany w buforowanych danych można zapisać, przesłaniając dwie metody. Zastąpij te metody, aby tymczasowo usunąć ochronę po zapisaniu dokumentu, a następnie ponownie zastosować ochronę po zakończeniu operacji zapisywania.

Aby uzyskać więcej informacji, zobacz How to: Cache data in a password-protected document (Instrukcje: buforowanie danych w dokumencie chronionym hasłem).

Zapobieganie utracie danych podczas dodawania wartości null do pamięci podręcznej danych

Po dodaniu obiektów do pamięci podręcznej danych wszystkie buforowane obiekty muszą zostać zainicjowane do wartości innej niż null , zanim dokument zostanie zapisany i zamknięty. Jeśli jakikolwiek buforowany obiekt ma wartość null po zapisaniu i zamknięciu dokumentu, środowisko uruchomieniowe Visual Studio Tools dla pakietu Office automatycznie usunie wszystkie buforowane obiekty z pamięci podręcznej danych.

W przypadku dodania obiektu z wartością null do pamięci podręcznej danych przy użyciu atrybutu CachedAttribute w czasie projektowania można użyć ServerDocument klasy do zainicjowania buforowanych obiektów danych przed otwarciem dokumentu. Jest to przydatne, jeśli chcesz zainicjować buforowane dane na serwerze bez zainstalowanego programu Word lub Excel, zanim dokument zostanie otwarty przez użytkownika końcowego. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do danych w dokumentach na serwerze.