public void Initialize(Action callback)
{
// Setup initial conditions.
if (IsInitialized || isInitializing) return;
isInitializing = true;
// Pass execution to deriving class.
OnInitialize(delegate
{
// Finish up.
isInitializing = false;
IsInitialized = true;
FireInitialized();
Helper.Invoke(callback);
});
}