当前位置: 首页>>代码示例>>C#>>正文


C# DocumentDatabase.Dispose方法代码示例

本文整理汇总了C#中DocumentDatabase.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# DocumentDatabase.Dispose方法的具体用法?C# DocumentDatabase.Dispose怎么用?C# DocumentDatabase.Dispose使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DocumentDatabase的用法示例。


在下文中一共展示了DocumentDatabase.Dispose方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TryGetOrCreateResourceStore

		protected bool TryGetOrCreateResourceStore(string tenantId, out Task<DocumentDatabase> database)
		{
			if (ResourcesStoresCache.TryGetValue(tenantId, out database))
			{
				if (database.IsFaulted && database.Exception != null)
				{
					// if we are here, there is an error, and if there is an error, we need to clear it from the 
					// resource store cache so we can try to reload it.
					// Note that we return the faulted task anyway, because we need the user to look at the error
					if (database.Exception.Data.Contains("Raven/KeepInResourceStore") == false)
					{
						Task<DocumentDatabase> val;
						ResourcesStoresCache.TryRemove(tenantId, out val);
					}
				}

				return true;
			}

			if (LockedDatabases.Contains(tenantId))
				throw new InvalidOperationException("Database '" + tenantId + "' is currently locked and cannot be accessed");

			var config = CreateTenantConfiguration(tenantId);
			if (config == null)
				return false;

			database = ResourcesStoresCache.GetOrAdd(tenantId, __ => Task.Factory.StartNew(() =>
			{
				var transportState = databaseTransportStates.GetOrAdd(tenantId, s => new TransportState());
				var documentDatabase = new DocumentDatabase(config, transportState);
				try
				{
					AssertLicenseParameters(config);
					documentDatabase.SpinBackgroundWorkers();
					InitializeRequestResponders(documentDatabase);

					// if we have a very long init process, make sure that we reset the last idle time for this db.
					documentDatabase.WorkContext.UpdateFoundWork();
				}
				catch (Exception)
				{
					documentDatabase.Dispose();
					throw;
				}
				documentDatabase.Disposing += DocumentDatabaseDisposingStarted;
				documentDatabase.DisposingEnded += DocumentDatabaseDisposingEnded;
				return documentDatabase;
			}).ContinueWith(task =>
			{
				if (task.Status == TaskStatus.Faulted) // this observes the task exception
				{
					logger.WarnException("Failed to create database " + tenantId, task.Exception);
				}
				return task;
			}).Unwrap());

			return true;
		}
开发者ID:jon-adams,项目名称:ravendb,代码行数:58,代码来源:HttpServer.cs


注:本文中的DocumentDatabase.Dispose方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。