//
// SuspensionManager.h
// Deklaration der SuspensionManager-Klasse
//
#pragma once
namespace $safeprojectname$
{
namespace Common
{
///
/// SuspensionManager erfasst den globalen Sitzungszustand, um die Verwaltung der Prozesslebensdauer
/// für eine Anwendung zu vereinfachen. Beachten, dass der Sitzungszustand bei einer Vielzahl von Bedingungen
/// automatisch gelöscht wird und niemals zum Speichern von Informationen verwendet werden sollte, die zwischen Sitzungen zwar bequem übertragen werden können,
/// jedoch beim Absturz der Anwendung gelöscht werden sollen oder
/// aktualisiert werden.
///
class SuspensionManager sealed
{
public:
static void RegisterFrame(Windows::UI::Xaml::Controls::Frame^ frame, Platform::String^ sessionStateKey, Platform::String^ sessionBaseKey = nullptr);
static void UnregisterFrame(Windows::UI::Xaml::Controls::Frame^ frame);
static concurrency::task SaveAsync();
static concurrency::task RestoreAsync(Platform::String^ sessionBaseKey = nullptr);
static Windows::Foundation::Collections::IMap^ SessionState();
static Windows::Foundation::Collections::IMap^ SessionStateForFrame(
Windows::UI::Xaml::Controls::Frame^ frame);
static void RegisterDependencyProperties();
private:
static void RestoreFrameNavigationState(Windows::UI::Xaml::Controls::Frame^ frame);
static void SaveFrameNavigationState(Windows::UI::Xaml::Controls::Frame^ frame);
static Platform::Collections::Map^ _sessionState;
static const wchar_t* sessionStateFilename;
static std::vector _registeredFrames;
static Windows::UI::Xaml::DependencyProperty^ FrameSessionStateKeyProperty;
static Windows::UI::Xaml::DependencyProperty^ FrameSessionBaseKeyProperty;
static Windows::UI::Xaml::DependencyProperty^ FrameSessionStateProperty;
};
}
}