Silverlight 4剪贴板安全例外"不允许访问"?

Nic*_*ume 5 c# security silverlight clipboard exception

我是Silverlight的新手,我正在做一些测试.在我目前的测试中,我尝试实时显示当前的剪贴板内容.但是这段代码有一些奇怪的行为:

namespace SilverlightTest
{
public partial class MainPage : UserControl
{
    private Timer _timer;

    public MainPage()
    {
        InitializeComponent();
        var dispatcher_timer = new DispatcherTimer {Interval = new TimeSpan(0, 0, 0, 5)};
        dispatcher_timer.Tick += new EventHandler(timer_Callback);
        dispatcher_timer.Start();
    }

    private void timer_Callback(object state, EventArgs eventArgs)
    {
        current_clip_board.Content = Clipboard.GetText();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        current_clip_board.Content = Clipboard.GetText();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

按钮Event和timer Event假设执行完全相同的操作.但事实并非如此!Button工作正常并将剪贴板文本设置为标签,但计时器抛出异常:

不允许剪贴板访问

问题是:为什么?:)

谢谢.

PS:我打赌一个线程问题:p

Wir*_*rie 4

在部分信任(浏览器内)Silverlight 应用程序(您可能在上面提到的场景)中,剪贴板访问受到限制。GetText 属性仅在 Silverlight 运行时确定由用户启动的情况下才可访问。你的例子是完美的——例如通过点击按钮。然而,调度计时器不是用户启动的,因此该属性会引发异常(这在浏览器内应用程序的上下文中尤其重要,如果您可以创建一个仅在浏览器中静默运行的 Silverlight 应用程序,这可能会成为一个很大的安全漏洞)浏览器,在用户不知情的情况下观看其剪贴板更新)。

有关更多详细信息,请参阅此剪贴板文档。