[英]Managed and Unmanaged resources in .Net
我對 .net 編程中的托管和非托管資源感到困惑。 我正在開發一個 vb.net 應用程序。 我在微軟網站上讀到,如果我們使用托管資源垃圾收集器將處理它,如果我們使用非托管資源,我們需要調用處理。 但是我在任何地方都沒有得到以下問題的答案。
IDisposable
其非托管或包含一些非托管IDisposable
,但 .net 具有良好的 GC,除非您以某種方式鎖定非托管資源。 你應該沒事。 var credentials = SdkContext.AzureCredentialsFactory
.FromServicePrincipal(clientId, clientSecret, tenantId,
AzureEnvironment.AzureGlobalCloud);
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithSubscription(subscriptionID);
List<IStorageAccount> storageAccounts =
azure.StorageAccounts.List().ToList();
foreach (IStorageAccount storageaccount in storageAccounts)
{
var exportSecrets = true;
CloudStorageAccount storageAccountss = new CloudStorageAccount(
new StorageCredentials(storageaccount.Name,
storageaccount.GetKeys().FirstOrDefault().Value), true);
var connString = storageAccountss.ToString(exportSecrets);
var storageAccount = CloudStorageAccount.Parse(connString);
CloudBlobClient myClient = storageAccount.CreateCloudBlobClient();
ContainerResultSegment resultSegment = null;
BlobContinuationToken continuationToken = null;
resultSegment = myClient.ListContainersSegmented("",
ContainerListingDetails.Metadata, 5, continuationToken, null,
null);
// Enumerate the containers returned.
foreach (var container in resultSegment.Results)
{
var containers = myClient.GetContainerReference(container.Name);
foreach (IListBlobItem item in container.ListBlobs(null, false,
BlobListingDetails.None))
{
if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob pageBlob = (CloudPageBlob)item;
if (pageBlob.Name.Contains(".vhd"))
{
// 0. Unspecified 1. Locked 2. UnLocked
if (Convert.ToInt32(pageBlob.Properties.LeaseStatus)
== 2)
{
list.Add(new Disks { Name =
pageBlob.Name.ToString(), URI =
pageBlob.Uri.AbsoluteUri.ToString(),
ContainerName = container.Name.ToString() });
}
}
}
}
}
}
Helper helper = new Helper();
StringBuilder sb = new StringBuilder();
DataTable dt = helper.GetData(list);
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
sb.Append(FormatCSV(dr[dc.ColumnName].ToString()) + ",");
sb.Remove(sb.Length - 1, 1);
sb.AppendLine();
}
File.WriteAllText("D:\\UnmanagedDisks.csv", sb.ToString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.