从 Dispatcher.RunAsync() 返回一个值到后台线程

2024-03-13

我正在使用 Dispatcher.RunAsync() 从后台线程显示 MessageDialog。但我无法弄清楚如何返回结果。

My code:

            bool response = false;

        await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
             async () =>
             {
                 DebugWriteln("Showing confirmation dialog: '" + s + "'.");
                 MessageDialog dialog = new MessageDialog(s);

                 dialog.Commands.Add(new UICommand(GetLanguageString("Util_DialogButtonYes"), new UICommandInvokedHandler((command) => {
                     DebugWriteln("User clicked 'Yes' in confirmation dialog");
                     response = true;
                 })));

                 dialog.Commands.Add(new UICommand(GetLanguageString("Util_DialogButtonNo"), new UICommandInvokedHandler((command) =>
                 {
                     DebugWriteln("User clicked 'No' in confirmatoin dialog");
                     response = false;
                 })));
                 dialog.CancelCommandIndex = 1;
                 await dialog.ShowAsync();
             });
        //response is always False
        DebugWriteln(response);

有办法这样做吗? 我考虑过可能从 RunAsync() 内部返回值,但函数是空的。


您可以利用ManualResetEvent class.

这是我的辅助方法,用于将值从 UI 线程返回到其他线程。这是针对 Silverlight 的!因此,你probably无法将其复制粘贴到您的应用程序并期望它能够工作,但希望它能让您了解如何继续。

    public static T Invoke<T>(Func<T> action)
    {
        if (Dispatcher.CheckAccess())
            return action();
        else
        {
            T result = default(T);
            ManualResetEvent reset = new ManualResetEvent(false);
            Dispatcher.BeginInvoke(() =>
            {
                result = action();
                reset.Set();
            });
            reset.WaitOne();
            return result;
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Dispatcher.RunAsync() 返回一个值到后台线程 的相关文章

随机推荐

  • 在Python中找到分数列表的最小公分母

    我有一个分数列表 from fractions import Fraction fractions list Fraction 3 14 Fraction 1 7 Fraction 9 14 输出应该是一个列表 其中包含每个分数的分子 最后
  • React - 将所有数据从 json 加载到组件中

    我正在使用 React 并尝试将数据从本地 json 文件加载到我的组件中 我试图打印所有信息 包括名称 值对中的 名称 不仅仅是值 使其看起来像一个表单 我正在寻找最好的方法来做到这一点 我需要解析吗 我需要使用地图功能吗 我是 Reac
  • 在 PHP 中获取数组的最后一个元素而不更改数组? [复制]

    这个问题在这里已经有答案了 array pop 将其从数组中删除 end 改变内部指针 唯一的方法真的像这样 my array array pop array keys my array 这有效 list end array slice a
  • 如何检查 window.external 上是否存在函数

    如何检查 window external 上是否存在函数 我正在从 javascript 调用 C 代码 并且想检查 C 对象中是否存在方法 我找到了路 只需使用 in 运算符 如下所示 if FunctionName in window
  • 元组的串联

    普通文本 我在 python 3 2 1 上编码时遇到一些问题 实际上我正在参加有关 python 2 5 的在线讲座 这是代码 x 100 divisors for i in range 1 x if x i 0 divisors div
  • 在 bash shell 中打印星号(“*”)

    a 5 echo aMin bash etc init d ckDskCheck sh 当我尝试运行以下代码时 它会正确显示 5 bash etc init d ckDskCheck sh 但是 当我尝试使用以下代码将结果分配给变量并将其打
  • 快速使用未解析的标识符“UIApplicationStateInactive”

    在我处理推送通知的 Swift 代码中 我有这一行 if application applicationState UIApplicationStateInactive application applicationState UIAppl
  • 如何在sqlite android中插入多行

    我有一种方法可以将值插入到sqlite在一个班级里 在主要活动中 我正在解析 json 值并尝试将这些值插入到sqlite在循环中 因为我必须插入不止一行 但只有一行被添加到数据库中 添加多行的方法如下 public void addSes
  • 如何访问SetDefaultContentHeaders中的底层对象?

    我有一个 Web api 我在其中返回一个对象 当我使用接受标头 image jpg 时 我想要该对象的图像表示形式 但我想根据我返回的对象设置文件名 我已经实施了一个BufferedMediaTypeFormatter并认为我应该在方法中
  • 如何在 Windows 中使用本地路径访问 Subversion 存储库?

    我安装了 CollabNet Subversion 服务器和客户端 运行附带的 Apache 从服务器上的命令行 我可以使用类似的路径轻松访问存储库 http server port svn repository 但我无法使用它在磁盘上的实
  • 类似 git 界面的最佳方法

    我正在编写一个小型命令行待办事项应用程序 它具有类似于 git 的通用界面 它可以执行多项任务 add list complete 所有这些都应该可以通过todo
  • docker容器主机名顺序号

    在 docker swarm 中存在副本 规模的情况下 是否有任何选项可以让主机名 容器名具有一些序列号 version 3 services serA image someimage1 hostname serA serB image s
  • 在 C# 中将字符串存储为 UTF8

    我在 C 中进行了大量的字符串操作 并且确实需要将字符串每个字符存储一个字节 这是因为我需要在内存中同时存储千兆字节的文本 这会导致内存不足的问题 我确信该文本永远不会包含非 ASCII 字符 因此就我的目的而言 System String
  • 一个类可以从类本身内部取消吗?

    例如 此代码有效吗 class abc int x y abc int x int y this x x this y y while true update public void update x y if y 0 this null
  • Python的seek函数是如何工作的?

    如果我有一些类似文件的对象并执行以下操作 F open abc r loc F tell F seek loc 10 寻求有什么作用 是从文件开头开始读取loc 10字节 或者它是否足够聪明 只备份 10 个字节 它是特定于操作系统和 li
  • 用 AJAX 调用替换多少内容就太多了?

    我在尝试进行 AJAX 开发时遇到了一个常见问题 在可能的情况下 我喜欢尝试只更新现有布局中的数据 而不是布局本身 例如 采用下面的 div div Here is some content div 我会得到更新的值content 5从服务
  • 使用“read”读取密码时如何回显星号(*)?

    如果我想回显 我需要对 Bash 中的代码做什么 当用户在 using 中键入某些内容时 用 s 代替密码字符 甚至完全隐藏这些字符 read As 马克 鲁沙科夫指出 read s将抑制在提示符下键入的字符的回显 您可以利用该功能作为此脚
  • jqGrid如何使用EditUrl

    我正在使用 jqGrid 使用 jSON 数据维护 MySQL 中的数据库 我能够在网格中显示数据 但是当我尝试通过模式表单添加或编辑数据行时 我收到一条消息 未设置 URL 但是 editurl 应该包含什么 mysql插入语句 我正在使
  • 如何在 TypeScript 中使用 Node `http` 模块

    我需要用 TypeScript 和 Node js 编写一个服务器 我下载了Node https github com DefinitelyTyped DefinitelyTyped blob master node node d ts f
  • 从 Dispatcher.RunAsync() 返回一个值到后台线程

    我正在使用 Dispatcher RunAsync 从后台线程显示 MessageDialog 但我无法弄清楚如何返回结果 My code bool response false await dispatcher RunAsync Wind