当前位置: 首页 > 知识库问答 >
问题:

任务对象上的C#Async/Await进度事件

蒙经纶
2023-03-14

有没有一种方法我可以做类似以下的事情?:

var task = scanner.PerformScanAsync();
task.ProgressUpdate += scanner_ProgressUpdate;
return await task;

共有1个答案

何涵忍
2023-03-14

推荐的方法在基于任务的异步模式文档中进行了描述,该文档为每个异步方法提供了自己的IProgress :

public async Task PerformScanAsync(IProgress<MyScanProgress> progress)
{
  ...
  if (progress != null)
    progress.Report(new MyScanProgress(...));
}

用法:

var progress = new Progress<MyScanProgress>();
progress.ProgressChanged += ...
PerformScanAsync(progress);

备注:

    null
 类似资料:
  • Async/await 是以更舒适的方式使用 promise 的一种特殊语法,同时它也非常易于理解和使用。 Async function 让我们以 async 这个关键字开始。它可以被放置在一个函数前面,如下所示: async function f() { return 1; } 在函数前面的 “async” 这个单词表达了一个简单的事情:即这个函数总是返回一个 promise。其他值将自动被

  • 在第一章节,我们简要介绍了async/.await,并用它来构建一个简单的服务器。本章将更为详细讨论async/.await的它如何工作以及如何async代码与传统的 Rust 程序不同。 async/.await是 Rust 语法的特殊部分,它使得可以 yield 对当前线程的控制而不是阻塞,从而允许在等待操作完成时,其他代码可以运行。 async有两种主要的使用方式:async fn和asyn

  • 用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。 为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和await,可以让coroutine的代码更简洁易读。 请注意,async和await是针对coroutin

  • 我是一名普通的C#开发人员,但偶尔会用Java开发应用程序。我想知道是否有与C#async/await相当的Java?简单地说,java等价物是什么:

  • 我在使用Async/Await时遇到了一个问题,无法使事务范围回滚。在没有事务作用域的情况下,一切都正常工作,但只要我有意造成异常(第二次迭代时插入的主键重复),就不会发生回滚(更新时)或任何与事务相关的错误。 我还应该注意,除非连接字符串中包含“OLE DB Services=4”,否则我将收到错误:“ITransactionLocal接口不受'Microsoft.ACE.OLEDB12.0'提

  • 本文向大家介绍说说你对async/await的理解?相关面试题,主要包含被问及说说你对async/await的理解?时的应答技巧和注意事项,需要的朋友参考一下 对generator生成器函数的改造,* 用async代替,yeild用await代替,使其更语义化,并且自动执行next方法 结合promise,采用同步代码的形式写异步代码,更优雅地解决回调地狱问题