在WPF中使用VB从另一个线程更新UI

在WPF中使用VB从另一个线程更新UI,wpf,vb.net,multithreading,Wpf,Vb.net,Multithreading,我正在尝试使用计时器扫描我的Xbox 360控制器。但是我不能像下面写的那样直接更新我的UI 当我尝试运行此代码时,会出现异常 WindowsBase.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理 其他信息:调用线程无法访问此对象,因为其他线程拥有它 XButton是GUI上我想要切换的单选按钮 Imports Microsoft.Xna.Framework Imports Microsoft.Xna.Framework.Inp

我正在尝试使用计时器扫描我的Xbox 360控制器。但是我不能像下面写的那样直接更新我的UI

当我尝试运行此代码时,会出现异常

WindowsBase.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理

其他信息:调用线程无法访问此对象,因为其他线程拥有它

XButton是GUI上我想要切换的单选按钮

Imports Microsoft.Xna.Framework
Imports Microsoft.Xna.Framework.Input
Imports System.Timers
Imports System.Windows.Threading

Public Class XboxControllerStatus
Friend WithEvents Timer1 As Timer


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Elapsed

    Dim currentState As GamePadState = GamePad.GetState(PlayerIndex.One)
    If currentState.IsConnected Then
        If currentState.Buttons.X.Pressed Then
            XButton.IsChecked = True

        Else
            XButton.IsChecked = False

        End If
    End If

End Sub

结束类

首先,您需要设置一个代理

之后,您只需从计时器中调用以下代码来调用它:

Dim DesiredValue为布尔值=真

调用(新SetCheckboxCallback(AddressOf SetCheckbox),新 对象(){DesiredValue})


首先,您需要设置一个代理

之后,您只需从计时器中调用以下代码来调用它:

Dim DesiredValue为布尔值=真

调用(新SetCheckboxCallback(AddressOf SetCheckbox),新 对象(){DesiredValue})


首先,您需要设置一个代理

之后,您只需从计时器中调用以下代码来调用它:

Dim DesiredValue为布尔值=真

调用(新SetCheckboxCallback(AddressOf SetCheckbox),新 对象(){DesiredValue})


首先,您需要设置一个代理

之后,您只需从计时器中调用以下代码来调用它:

Dim DesiredValue为布尔值=真

调用(新SetCheckboxCallback(AddressOf SetCheckbox),新 对象(){DesiredValue})


这对我来说一直都很有用

Control.Invoke(sub()
                  'Put code here
               End Sub)

这对我来说一直都很有用

Control.Invoke(sub()
                  'Put code here
               End Sub)

这对我来说一直都很有用

Control.Invoke(sub()
                  'Put code here
               End Sub)

这对我来说一直都很有用

Control.Invoke(sub()
                  'Put code here
               End Sub)

这是一个非常好的答案-不确定为什么它被掩埋而不被掩埋这是一个非常好的答案-不确定为什么它被掩埋而不被掩埋这是一个非常好的答案-不确定为什么它被掩埋而不被掩埋这是一个非常好的答案-不确定为什么它被掩埋而不被掩埋