using System; using System.Runtime.InteropServices; namespace ScreenConnect; public static class ComDisposer { public static ComDisposer Wrap(T obj) { return new ComDisposer(obj); } public static ComArrayDisposer Wrap(T[] objs) { return new ComArrayDisposer(objs); } } public class ComDisposer : IDisposable { public T Object { get; private set; } public ComDisposer(T obj) { Object = obj; } public void Dispose() { Marshal.ReleaseComObject(Object); } }