private void Dispose(bool disposing) { if (!mIsDisposed) { if (disposing) { StopFulfillingFiveYearPlanAsync() .Wait(); mEngine?.Dispose(); mEngine = null; mAppMetricsMonitor = null; mDbAssetFactory = null; IDisposable disposableAppMetricsMonitor = mAppMetricsMonitor as IDisposable; if (disposableAppMetricsMonitor != null) { disposableAppMetricsMonitor.Dispose(); } } mIsDisposed = true; } }
public async Task <Stakhanovise> StartFulfillingFiveYearPlanAsync() { CheckNotDisposedOrThrow(); if (mDbAssetFactory == null) { mDbAssetFactory = mStakhanoviseSetup.BuildDbAssetFactory(); } if (mEngine == null) { mEngine = mStakhanoviseSetup.BuildTaskEngine(); } if (mAppMetricsMonitor == null) { mAppMetricsMonitor = mStakhanoviseSetup.BuildAppMetricsMonitor(); } if (mDbAssetFactory != null) { await mDbAssetFactory.CreateDbAssetsAsync(); } if (!mEngine.IsRunning) { await mEngine.StartAsync(); } if (mAppMetricsMonitor != null && !mAppMetricsMonitor.IsRunning && mEngine is IAppMetricsProvider) { await mAppMetricsMonitor.StartAsync(( IAppMetricsProvider )mEngine); } return(this); }