以下は、架空のライブラリlibfooを操作するハンドルをラップするクラスLibFooHandleを作成し、usingステートメントと組み合わせて使用する例です。 この例に登場する架空のライブラリlibfooには、以下のようなAPI関数が用意されているものと想定します。

foo_t* foo_create_handle()
libfooの操作関数を呼び出すためのインスタンスハンドルを作成する。
bool foo_release_handle(foo_t* handle)
libfooのインスタンスハンドルを解放する。
void foo_do_something(foo_t* handle)
libfooのインスタンスハンドルに対してなんらかの操作を行う。

なお、例示のためAPI呼び出しに付随して想定される例外等の考慮・処理は省略しています。

SafeHandleクラスを使ってライブラリのハンドルをラップする
using System;
using System.Runtime.InteropServices;

// libfooのAPIセットをDllImportしたものを想定した静的クラス
static class libfoo {
  /*[DllImport("libfoo")]*/ public static /*extern*/ IntPtr foo_create_handle() => new IntPtr(1);
  /*[DllImport("libfoo")]*/ public static /*extern*/ bool foo_release_handle(IntPtr handle) => true;
  /*[DllImport("libfoo")]*/ public static /*extern*/ void foo_do_something(IntPtr handle) => Console.WriteLine(handle);
}

// libfooのハンドルをラップするSafeHandle
public sealed class LibFooHandle : SafeHandle {
  public override bool IsInvalid => handle == IntPtr.Zero; // handleの値が0の場合、無効として扱う

  private LibFooHandle(IntPtr handle)
    : base(IntPtr.Zero, ownsHandle: true)
  {
    SetHandle(handle);
  }

  public static LibFooHandle Create()
  {
    // foo_create_handle関数が返すハンドルをラップしてLibFooHandleとして返す
    return new LibFooHandle(libfoo.foo_create_handle());
  }

  protected override bool ReleaseHandle()
  {
    // foo_release_handle関数を呼びハンドルを解放する
    return libfoo.foo_release_handle(this.handle);

    // このあとhandleには無効値(IntPtr.Zero)が設定され、IsInvalidがtrueとなる
    // IsInvalidがtrueの場合ReleaseHandleは呼び出されなくなるので、二重解放は起こらない
  }

  public void DoSomething()
  {
    if (IsInvalid)
      throw new InvalidOperationException("handle is invalid");

    // foo_do_something関数を呼びハンドルに対して操作を行う
    libfoo.foo_do_something(this.handle);
  }
}

class Sample {
  static void Main()
  {
    // libfooのハンドルを作成する
    using (var handle = LibFooHandle.Create()) {
      // libfooのハンドルを使って何らかの操作を行う
      handle.DoSomething();
    } // 必要なくなった時点でlibfooのハンドルを解放する
  }
}

.NET Core 3.0以降では、ネイティブライブラリのロードに、DllImport属性だけでなくNativeLibraryクラスを使用することができるようになっています。