Управляемые/неуправляемые ресурсыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Управляемые/неуправляемые ресурсы

Сообщение Anonymous »

Просто чтобы увидеть, правильно ли я встану за управляемыми и неуправляемыми ресурсами.
У меня есть следующий класс: < /p>
api: < /p>
public class Api:Idisposable
{
HttpClient _Client;
Public Api()
{
_Client = new HttpClient();
//Define _Client properties
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
//lot of other functions
protected virtual void Dispose(bool disposing)
{
if (!_isDisposed)
{
_isDisposed = true;

if (disposing)
{
_Client.Dispose();
_Client = null;
}
}
}
< /code>
Итак ... httpclient - это управляемый ресурс, который в двух словах содержит метод распоряжения, который мне нужно позвонить после того, как я закончу, используя его, если я этого не делаю, то мой _client не станет неуправляемым ресурсом? < /p>
Api _Example = new Api();
_Example.function1();
_Example.Function2();
< /code>
В приведенном выше коде _client в API никогда не вызывает распоряжение, так что он стал неуправляемым? И чтобы сделать это, мне нужно добавить api.dispose () после того, как я закончу использовать его? < /p>
Теперь, как насчет этого: < /p>
using (Api _Example = new Api())
{
_Example.function1();
_Example.Function2();
}
< /code>
оператор «Использование» по умолчанию делает призыв к Api.dispose (), который автоматически выпустит _client из памяти, a.k.a. Управляемый ресурс < /p>
Я просто хочу знать, правильно ли я понял тему, так ли я, как вы, то же самое, так, как вы, то, что вы, то же самое. API с разными конечными точками для различных пор. Поэтому я полагаю, что его легче читать (также приветствуются любые комментарии об этом) < /p>
public class AnotherAnotherClass
{
private void ApiCall()
{
using (Api _Api = new Api())
{
_Api.DummyExample();
}
}
}

public class Api : IDisposable
{
HttpClient _Client;
public Api()
{
_Client = new HttpClient();
//Define _Client properties
}
protected void DummyExample()
{
bool Continue = true;
string EndPoint;
while (Continue)
{
EndPoint = //change based in alot of options
HttpResponseMessage Response = _Client.GetAsync(_Client.BaseAddress + EndPoint).Result;
if (Response.IsSuccessStatusCode)
{
AnotherClass ResultApi = JsonConvert.DeserializeObject(Response.Content.ReadAsStringAsync().Result);
if (PrecioAPI.Count == 0)
{
Continue = false;
}
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... -resources
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»