System.Net.HttpListener только явно реализует IDisposable

#.net

#.net

Вопрос:

Почему HttpListener явно реализует IDisposable. Это означает, что вы должны привести к IDisposable перед вызовом dispose и, на мой взгляд, делает тот факт, что вы должны вызвать dispose, менее очевидным.

Ответ №1:

  1. Вам не нужно явное приведение, если вы используете using блок. (Это предпочтительная идиома, где это возможно, для работы с IDisposable объектами.)

     using (HttpListener hl = /* ... */)
    {
        // ...
    }
      
  2. У него есть Close метод, который в значительной степени является псевдонимом для Dispose . (Не мой любимый шаблон, но разработчикам фреймворка, похоже, он нравится!)

     HttpListener hl = /* ... */
    try
    {
        // ...
    }
    finally
    {
        hl.Close();
    }
      

Комментарии:

1. Возможно, проблема в использовании заключается в том, почему они явно реализовали интерфейс IDisposable. Я использую асинхронные методы, хотя поэтому сложно использовать маршрут using.