【问题标题】:WindowInteropHelper.Handle — do I need to release it?WindowInteropHelper.Handle — 我需要释放它吗?
【发布时间】:2013-03-09 16:13:19
【问题描述】:

在 WPF 中,我使用以下代码获取 IntPtr 句柄:

IntPtr mainWindowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle

当我使用完这个句柄后,我是否需要以任何方式释放它(例如使用 Marshal.FreeHGlobal() 方法)?

编辑:我在考虑 Marshal.FreeHGlobal(),而不是 Marshal.Release(),对不起!

【问题讨论】:

    标签: wpf winapi com


    【解决方案1】:

    这与 COM 没有任何关系,Marshal.Release() 不适用。您只需获得本机窗口句柄的副本,它不必被释放。当窗口被销毁时,您需要停止使用句柄。由 Window.Close 事件发出信号。

    【讨论】:

    • 太好了,谢谢,我想我想得太多了,自己也糊涂了。我实际上是指 Marshal.FreeHGlobal() 方法,而不是 Marshal.Release()。还是一样的情况吗?如果是,你什么时候使用 Marshal.FreeHGlobal() ?
    • 不,它也与内存无关。再说一遍:不要做任何事情来“释放”它。
    猜你喜欢
    • 2010-09-08
    • 2012-01-22
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多