代码之家  ›  专栏  ›  技术社区  ›  Dänu

无法获取本地或参数“hwndSource”的值,因为它在此指令指针处不可用

  •  0
  • Dänu  · 技术社区  · 16 年前

    我在玩Interops,我想:“嘿,让我们编写一些可以访问剪贴板的代码……”所以我在google上找到了一些文章(是的,我是用WPF-.net3.5做的)。

    private void Window_SourceInitialized(object sender, EventArgs e)
    {
        // Hook to Clipboard
        base.OnSourceInitialized(e);
        HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
        if (hwndSource != null)
        {
            installedHandle = hwndSource.Handle;
            viewerHandle = SetClipboardViewer(installedHandle);
            hwndSource.AddHook(new HwndSourceHook(this.hwndSourceHook));
        }
        // End Hook to Clipboard 
    } 
    

    我(真的)不知道那里发生了什么事。

    有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  3
  •   Thomas Levesque    16 年前

    你的问题是 base.OnSourceInitialized . 重写方法时应该调用基实现,但这里不是这样的:您是在处理事件,而不是重写方法。

    自从 SourceInitialized OnSourceInitialized 方法,如果你调用 从事件开始,它将再次引发事件。所以有一个无限递归,最终导致堆栈溢出。

    因此,您有两种解决问题的方法:

    • 覆盖 资源初始化 源已初始化 事件
    • 删除对的呼叫
    推荐文章