gpt4 book ai didi

C# UWP 应用程序调用了为不同线程编码的接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 22:25:35 25 4
gpt4 key购买 nike

我有一个 C# UWP 应用程序,其中包含一个我想每 5 秒调用一次的函数。从按钮调用时该函数运行良好,并且定时器每 5 秒写入调试控制台一次......当我从定时器调用该函数时,所有的事情都变得一团糟。我明白了:

System.Exception 未被用户代码处理HResult=-2147417842Message=应用程序调用了为不同线程编码的接口(interface)。 (HRESULT 异常:0x8001010E (RPC_E_WRONG_THREAD))

最佳答案

我假设您的功能与应用程序的用户界面有关。任何接触 UI 的东西都需要在 UI 的调度程序线程上运行(大多数应用程序只有一个,直到您进入多个窗口应用程序)。

您可以使用 Windows.UI.Xaml。 DispatcherTimer在调度程序线程上运行您的计时器。

如果您需要在工作线程上运行代码,然后在调度程序线程上触摸 UI,您可以调用 Dispatcher。 RunAsync将调用编码回调度程序线程。

您通常可以通过 Window.Dispatcher 从您的窗口找到您的调度员.

var ignored = Window.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
// Do something on the dispatcher thread
});

关于C# UWP 应用程序调用了为不同线程编码的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com