在WP8中摇动手势库

时间:2014-08-28 05:55:36

标签: c# windows-phone-8 accelerometer dispatcher

我正在尝试设计一款在摇动手机上生成随机数的游戏。我正在使用 Shake Gesture Library ,请参阅以下链接:

Link: Shaking-up-your-WP7

我从以下位置更改默认示例代码:

    private void Instance_ShakeGesture(object sender, ShakeGestureEventArgs e)
{
    _lastUpdateTime.Dispatcher.BeginInvoke(
        () =>
        {
            _lastUpdateTime.Text = DateTime.Now.ToString();
            CurrentShakeType = e.ShakeType;
        });
}

TO:

  private void Instance_ShakeGesture(object sender, ShakeGestureEventArgs e)
{
              PlayButton_Click(null, null); 

}

PlayButton_Click()是我的方法,它包含用于生成随机数的rest语句。

我摇动手机,但在进入PlayButton_Click()的第一个声明后,它显示我的错误:

类型' System.UnauthorizedAccessException'的例外情况发生在System.Windows.ni.dll中但未在用户代码中处理

1 个答案:

答案 0 :(得分:1)

问题是PlayButton_Click正在访问UI组件,对Instance_ShakeGesture的调用是在非UI线程上进行的,您无法在主UI线程以外的任何线程上访问UI组件。 Dispatcher.BeginInvoke用于将请求放在UI线程上。您需要使用Dispatcher.BeginInvoke来调用PlayButton_Click

        Deployment.Current.Dispatcher.BeginInvoke(
        () =>
        {
            PlayButton_Click(null, null); 
        });