public SPModelUsageCollection Provision(SPWeb targetWeb, SPModelProvisionOptions options, SPModelListProvisionOptions listOptions) { CommonHelper.ConfirmNotNull(targetWeb, "targetWeb"); CommonHelper.ConfirmNotNull(listOptions, "listOptions"); if (contentTypeAttribute == null || !contentTypeAttribute.ExternalContentType) { bool provisionContentType = options.HasFlag(SPModelProvisionOptions.ForceProvisionContentType) || provisionedSites.TryAdd(targetWeb.Site.ID, true); bool provisionList = !options.HasFlag(SPModelProvisionOptions.SuppressListCreation); if (provisionContentType || provisionList) { string siteUrl = targetWeb.Site.Url; Guid siteId = targetWeb.Site.ID; Guid webId = targetWeb.ID; ProvisionResult result = new ProvisionResult(); Thread thread = new Thread(() => Provision(siteUrl, siteId, webId, provisionContentType, provisionList, listOptions, result)); thread.Start(); if (!options.HasFlag(SPModelProvisionOptions.Asynchronous)) { thread.Join(); if (result.Exception != null) { throw result.Exception.Rethrow(); } return(new SPModelUsageCollection(targetWeb.Site, result.ProvisionedLists.ToArray())); } } } return(new SPModelUsageCollection(targetWeb.Site, new SPModelUsage[0])); }