none
访问剪贴板时出现错误 RRS feed

  • 问题

  • 我希望应用在剪贴板内容发生改变时,将当前剪贴板上的内容显示在UI中的列表中,我用了如下代码      

    Clipboard.ContentChanged += async (s, ee) =>
    {
    var dataview = Clipboard.GetContent();
    if (dataview.Contains(StandardDataFormats.Text))
    {
    lstBox.Items.Add(await dataview.GetTextAsync());
    }
    };

    感觉代码没啥问题,调试状态下也能正常运行,但是正常部署运行(就是直接在开始菜单里找到部署的应用,直接打开)时,在尝试复制内容时,应用就会崩溃,而且这个Bug在调试时调不出来。

    我又用 try-catch 试图找到这个问题的原因,在非调试状态下给的错误信息是:System.UnauthorizedAccessException:拒绝访问

    求教该如何解决?

    2015年10月31日 5:35

答案

  • 这一行 lstBox.Items.Add(await dataview.GetTextAsync());  把它回调到UI线程执行:

    await lstBox.Dispatcher.RunAsync(
            Windows.UI.Core.CoreDispatcherPriority.Normal, 
            () => { 
                 lstBox.Items.Add(await dataview.GetTextAsync());
            });


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年11月16日 7:19