zoukankan      html  css  js  c++  java
  • Requested Clipboard operation did not succeed的解决办法

    在使用Clipboard.SetText(strTar) 将文本复制进剪贴板的时候,有时候会导致Requested Clipboard operation did not succeed的异常,但有时候又不会。

    原因:

           剪切板被所有进程共享,但是不能同时被两个进程修改。所以,如果有两个程序同时访问剪贴板,就有可能导致异常的发生。即使电脑中其他的应用程序的窗口没有处于激活状态,它们也可能在后台访问剪贴板,从未导致剪贴板访问冲突。

    解决方法:

            在捕获到异常的时候,间隔一定的时间,再次尝试对剪贴板进行操作。

            在.NET framework (2.0)和其以上的版本已经提供了一个方法Clipboard.SetDataObject(object data, bool copy, int retryTimes, intretryDelay) 用来解决这个问题。他会在访问剪贴板冲突的时候,间隔一定的时间,尝试访问剪贴板。

    方法的说明:

    //
            // 摘要:
            //     尝试指定的次数,以将数据置于系统剪贴板中,且两次尝试之间具有指定的延迟,可以选择在退出应用程序后将数据保留在剪贴板中。
            //
            // 参数:
            //   data:
            //     要置于剪贴板中的数据。
            //
            //   copy:
            //     如果想在退出应用程序后将数据保留在剪贴板中,则为 true;否则为 false。
            //
            //   retryTimes:
            //     尝试将数据置于剪贴板中的次数。
            //
            //   retryDelay:
            //     两次尝试之间暂停的毫秒数。
            //
            // 异常:
            //   System.Threading.ThreadStateException:
            //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。
            //
            //   System.ArgumentNullException:
            //     data 为 null。
            //
            //   System.ArgumentOutOfRangeException:
            //     retryTimes 小于零。- 或 -retryDelay 小于零。
            //
            //   System.Runtime.InteropServices.ExternalException:
            //     未能将数据置于剪贴板中。这种情况通常发生在剪贴板正在被其他进程使用的时候。
            public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay);

    参考链接

    ClipBoard.SetText Exception

    Requested Clipboard operation did not succeed—MSDB Forums.

    Requested Clipboard operation did not succeed—StackOverFlow

  • 相关阅读:
    tcp/ip--百度百科
    Web service--百度百科
    .NET--百度百科
    ibatis--百度百科
    Struts2--百度百科
    spring--百度百科
    从头认识Spring-1.15 对SpEl的值的操作(1)-数值运算
    performSelector 方法的自己主动俘获特性
    图解WinHex使用入门
    LINQ使用与并行
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2954915.html
Copyright © 2011-2022 走看看