非等待异步方法在 UI 线程上运行?

2023-12-05

我想要一个方法(我们称之为M1)执行一些async循环中的代码(让我们调用第二个方法M2)。在每次迭代中 - UI 应使用以下结果进行更新M2.

为了等待M2, M1需要是async. But M1应该在 UI 线程上运行(以避免竞争条件),因此它将在没有await.

我这样想对吗?M1UI的更新会在UI线程上进行吗?


(Extra: It seems OK to have an async void in this case. Is this correct?)


是的。 (假设您使用返回 UI 线程的同步上下文 - 即来自 WinForm/WPF 的同步上下文)。

请注意,这也意味着您无法以这种方式安排 CPU 密集型操作,因为它将在 UI 线程上运行。

Using void async是在 WinForms 中处理事件的相当标准的方法:

void async click_RunManyAsync(...)
{
   await M1();
}

void async M1()
{
     foreach (...)
     {
        var result = await M2(); 
        uiElement.Text = result; 
     }
}

async Task<string> M2()
{
    // sync portion runs on UI thread
    // don't perform a lot of CPU-intensive work

    // off main thread, same synchronization context - so sync part will be on UI thread. 
    var result = await SomeReallyAsyncMethod(...); 

    // sync portion runs on UI thread
    // don't perform a lot of CPU-intensive work
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非等待异步方法在 UI 线程上运行? 的相关文章

  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 用什么来代替 ::ng-deep

    我正在尝试以角度设置路由器出口放置的元素的样式 并希望确保生成的元素的宽度为 100 从大多数回复中 我发现我应该使用 ng deep选择器 但是来自 Angular 的docs它正在被弃用 有没有替代方案 ng deep FWIW 在我的
  • 十六进制字符串到图像

    我有一个十六进制字符串 如下所示 String hexImage 0xFFD8FFE000104A46494600010200006400640000FFEC00114475636B79000100040000003C 我需要使用 Java
  • 如何在asp.net中启用角色?

    我正在尝试在 ASP NET 中启用角色 但是 我收到了一些错误 并且在尽力之后我无法解决它们 我是 Visual Studio 界面的新手 我尝试创建一个登录页面作为 ASP NET Web 应用程序 然后 由于我们必须配置页面以连接到数
  • WP8 IE10 视口问题

    你们是否注意到 当使用 ms viewport 特定宽度为 320px 或设备宽度 时 Web 浏览器内容可以移动到可用空间之外 似乎文档大小错误 因此我可以将其内容滚动到左侧 但没有任何空白 我也可以将其缩小 但我不应该 之后它的大小并不
  • 使用ggplot2绘制不同颜色的多条线

    我有一个数据框 其中包含年份列 1980 2009 和 16 列 其中包含来自 16 个不同模型的气象数据 因此每个值代表一年和一个模型的年值 下面是一些代码 可以很容易地重现 set seed 20 df lt as data frame
  • 如何在显示表单后运行代码? (“显示”有问题。)

    我想Shown就是答案 但似乎并非所有控制都是平等的 一个面板is立即显示 而标签则不显示 我有以下代码 public partial class Form2 Form Panel p new Panel BackColor Color G
  • Ng-animate 停止使用 $templateRequest 装饰器工作

    当我的用户未经身份验证时 我试图避免使用 Angular js 出现模板错误 为了做到这一点 我来到了这个堆栈溢出解决方案 它对我有用 但现在我注意到我的 ng animate 停止工作而没有抛出控制台错误 我缺少什么 Update 这是使
  • if 语句中的布尔值

    今天 我收到了关于代码的评论 考虑到我在学校作业中检查变量是真还是假的方式 我写的代码是这样的 var booleanValue true function someFunction if booleanValue true return
  • oracle中需要修剪空格

    无法修剪表中以下数据中的空格 列数据类型为 VARCHAR2 650 CHAR 我尝试了修剪功能来消除空白 但这对我不起作用 我的表中的数据 xxxxxxxxxx yyyyyyyyy 12 7 14 12 13 14 xxxxxxxxxx
  • 分配给 BigInteger 数组中的 an 元素时出错

    这是我的代码 当我创建数组时它显示错误BigInteger并尝试赋值 package test import java math import java lang import java util public class Test pub
  • Tomcat工作目录必须定期清理

    我们的 Tomcat 遇到了一个问题 我的同事都无法真正解释 我们有一只雄猫 版本7 0 26 在 Linux 计算机上 部署是通过爆炸战争 我们的类是jar打包的 其余的直接进入WEB INF和META INF 另外还有一个内容管理服务器
  • Spring Security 6 和 JSP 视图渲染

    我正在将应用程序从 Spring Boot 2 7 升级到 Spring Boot 3 其中包括更新到 Spring Security 6 我们设置了以下属性 spring mvc view prefix WEB INF view spri
  • 从 RStudio EC2 实例中的 S3 读取大型 JSON 文件(Louis Aslett 的 AMI)

    我正在经历与这个问题类似的问题here 我在 AWS S3 上有一个大的 JSON 文件 并尝试通过 RStudio 来自 Louis Aslett 的 AMI 的 EC2 实例 访问它 我什至尝试从 t2 迁移到具有 30GB 内存的 r
  • 使用 CSS 变换倾斜后应用于位置 div 的边距

    可能比 CSS 更多的数学知识 但我正在尝试确定一种在应用 CSS skewY 变换后调整 div 位置的方法 在下面的代码片段中 带有蓝色边框的 div 应用了 3 5 度的倾斜度 我想知道是否有数学方法可以知道倾斜度是多少top应用于蓝
  • 序列化多部分表单请求以在 Play 2.1 上进行测试

    我正在为 play2 1 编写一个使用路由函数的多部分表单的后置控制器测试 route FakeRequest POST postControllerRoute url FakeHeaders Seq HeaderNames CONTENT
  • Powershell 中的 New-Object -ComObject 和 VB 中的 CreateObject() 有什么区别?

    我有一个关于 Windows PowerShell 在处理 Com Interop 时如何工作的问题 我有一个第三方应用程序 我们称之为ThirdPartyApp 公开了一个我可以调用的 API 我可以提前绑定它 例如Excel 或 Vis
  • Bokeh 自动填充日期时间轴缺失值:如何停止?

    我正在尝试构建一个交互式情节pandas dataframe的财务数据 当市场休市或周末时 数据帧指数存在一些差距 问题是 当我使用数据帧索引作为 xasis 时 Bokeh 总是自动填充这些空白 使其在视觉上很难看 如何才能无间隙地打印数
  • 在 Fortran 牛顿法中传递附加参数

    我在实现在 Fortran 程序中调用牛顿法的方法时遇到问题 所以我想用牛顿法来求解以下方程the link 但是 我的程序与上面的示例略有不同 就我而言 方程需要一些在运行时产生的附加信息 subroutine solve f fp x0
  • 如果工作表编号/名称是变量/变体,则引用公式中的下一个或上一个工作表

    如果工作表编号 名称是变量 变体 如何引用公式中的下一个或上一个工作表 我已经看到用 vba 来做到这一点的方法 有没有办法用公式或函数来做到这一点 这是使用常规 Excel 公式列出所有工作表名称的另一种方法 Cell A1 CELL f
  • 非等待异步方法在 UI 线程上运行?

    我想要一个方法 我们称之为M1 执行一些async循环中的代码 让我们调用第二个方法M2 在每次迭代中 UI 应使用以下结果进行更新M2 为了等待M2 M1需要是async But M1应该在 UI 线程上运行 以避免竞争条件 因此它将在没