我的 WPF 应用程序检查剪贴板上的数据以查看它是否可以使用这些数据。因为我根据数据(通过ICommand
实现)设置了一些要启用/禁用的按钮,所以经常调用此代码。
确定我的应用程序是否可以处理数据的工作有时可能很重要,因此导致我的应用程序随机“挂起”。我不相信我可以将这项工作推到另一个线程,因为 WPF 运行时期望快速响应。
为了解决这个问题,我想我会比较IDataObject
s (剪贴板中的当前与上一次尝试中的缓存。直接比较(甚至 anobject.ReferenceEquals
不会返回所需的结果,所以我想我会试试这个方法Clipboard.IsCurrent
。描述听起来正是我想要的,但是当我评估以下内容时:
Clipboard.IsCurrent(Clipboard.GetDataObject())
结果是false
。当前的解决方法是比较 IDataObject 上的数据格式,但这不是一个好的答案,因为我的应用程序可以处理文件系统中的一些文件,但不是全部。因此,即使格式相同,我的应用程序是否可以处理数据的结果也可能并不总是相同的。