社区首页 >问答首页 >在引发异常的异步期间维护重试状态

在引发异常的异步期间维护重试状态
EN

Stack Overflow用户
提问于 2013-08-21 19:14:03
回答 1查看 170关注 0票数 0

所以我有一个UI线程。人们点击某物是因为他们喜欢它。所以单击会触发一些函数调用。其中一个底层函数调用使用CDROM驱动程序,该驱动程序通过尝试几次读取脏光盘,并进行疯狂的敲击。

因此,我想要一个响应的UI,我把等待在我的函数调用。因此,当person单击时,函数将控制权放弃给UI线程。函数尝试读取CDROM,但是它非常脏,因此它会向调用方抛出异常。该调用者计算重试次数,并继续尝试三次。

所以,如果这一切都在等着,我该把计票记在哪里?

如果我将计数保持在一个较低的级别,而这个级别随着等待而放弃,它就不能继续尝试,直到三次尝试,因为it被放弃了。

但是如果我不放弃,我就无法维护一个响应性UI。

我是否将计数保存在Task对象中?到底哪个线程/等待级别可以负责检查重试计数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 04:20:10

您可以将重试逻辑放在最合适的位置。awaittry工作得非常好

代码语言:javascript
代码运行次数:0
复制
public async Task PerformOperationAsync(int retries)
{
  while (retries != 0)
  {
    try
    {
      await PerformSingleOperationAsync();
      return;
    }
    catch (Exception ex)
    {
      Log(ex);
      --retries;
    }
  }
}

上面的代码如果没有重试,就会忽略失败。还可以抛出最后一个错误:

代码语言:javascript
代码运行次数:0
复制
public async Task PerformOperationAsync(int retries)
{
  while (true)
  {
    try
    {
      await PerformSingleOperationAsync();
      return;
    }
    catch (Exception ex)
    {
      Log(ex);
      if (--retries == 0)
        throw;
    }
  }
}

抛出第一个错误或所有错误的集合作为一个练习留给读者。;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371097

复制
相关文章
Spring Bean的定义包含哪些内容?
前面我发了一个关于Spring Bean的视频。在这个视频中,我简单提到了Spring Bean的定义。其中,有几位同学就私信我,说老师能不能拍一期关于Spring Bean定义的详细介绍,今天我就来满足大家的要求。关于Spring Bean的定义我一共分为三部分来介绍,首先,介绍Spring Bean声明式配置内容;然后,介绍BeanDefinition与配置文件的关系;最后,介绍Spring如何解析配置文件?
Tom弹架构
2022/08/22
5940
Spring Bean的定义包含哪些内容?
Python基础包含哪些内容?学习什么?
Python基础包含哪些内容?学习什么?学习Python基础了解Python语言起源、设计目标、设计哲学,Python语言的优缺点和面向对象的基本概念、执行方式、集成开发环境PyCharm的使用为Python的深入学习做铺垫。
python学习教程
2021/04/23
6250
Python基础包含哪些内容?学习什么?
使用WiX制作简单MSI安装程序
WiX完全用xml描述,使用命令行来生成。只要用任何一个文本编辑器就可以了。但是为了开发效率,我们还是借助于辅助工具比较好。是一般使用的工具是两个:一个Visual Studio插件,在WiX的安装包里面附带,另一个就是WiXEdit,WixEdit是编辑的XMLXML的源代码的图形化工具箱.WixEdit会让你创造体制条件与MSI和MSM测试wix工具箱.它提供了直观的、轻松的对话方式编辑wix文件来源。 下载和安装 1、下载Wix 3.0版本,目前还是beta。但是已经足够稳定了,可以应用于生产环境。
张善友
2018/01/19
3.7K0
使用WiX制作简单MSI安装程序
python生成安装文件 msi
①.需要在目录下面创建一个文件 。setup.py ②.写入代码: import sys from cx_Freeze import setup, Executable import os os.environ['TCL_LIBRARY'] = r'C:\Python36-32\tcl\tcl8.6' os.environ['TK_LIBRARY'] = r'C:\Python36-32\tcl\tk8.6' include_files=[ r'C:\Python36-32\DLLs\tcl8
py3study
2020/01/13
1.9K0
scp(跨服务区复制文件)和创建文件,文件夹,清空文件夹的内容
1,清空文件夹的内容: $ echo ” ” > aa.log         即 echo ” ” > “要清空的文件” 2,创建文件 $ touch aa.txt 即touch “文件名” 3,创建文件夹 $ mkdir aa 4,创建多级文件夹 $ mkdir aa/aa.txt 5,scp(跨服务区复制文件) scp aa repos@10.250.1.200:/apps scp “文件名”  要复制到的服务器用户名@服务器IP:目录 6,scp(跨服务区复制文件夹) scp -r aa repo
全栈程序员站长
2021/12/23
1.9K0
新手指南|帮助中心应该包含哪些内容?
帮助中心让用户能够通过企业提供的帮助页面对企业产品、使用手册、常见问题进行查询。让用户无需联系企业的客服人员来对常见问题进行解答。让用户能够更加快捷方便的解决问题。
用户9912463
2022/08/18
2800
渗透测试流程包括_渗透测试包含哪些内容
3、确定需求:渗透测试的方向是web应用的漏洞?业务逻辑漏洞?人员权限管理漏洞?还是其他,以免出现越界测试。
全栈程序员站长
2022/11/15
2.1K0
VBA实用小程序72:遍历文件夹(和子文件夹)中的文件
很多时候,我们都想要遍历文件夹中的每个文件,例如在工作表中列出所有文件名、对每个文件进行修改。VBA给我们提供了一些方式:(1)Dir函数;(2)File System Object。
fanjy
2021/04/21
10.6K0
VBA实用小程序72:遍历文件夹(和子文件夹)中的文件
输入两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
学习过程中自己记录一下 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I
砖业洋__
2023/05/06
4370
Linux\Mac 递归移除某文件夹下所有文件(不包含文件夹)的执行权限命令
今天别人给了我传了一个文件夹,里面是一个项目代码。我查看了一下,发现所有文件都是有执行权限的。这让我很不爽,于是我将所有文件(不包含文件夹)的执行权限全部去掉。执行命令如下:
FungLeo
2020/06/03
1.6K0
SEO外链推广,为什么除了内容,页面链接也很重要?
在做SEO的过程中,我们都非常清楚链接的重要性,特别是外链推广的时候,我们通常将重点都放在“链接”上,而并没有过多考虑,内容作为链接载体的重要性。 
蝙蝠侠IT
2019/10/23
5490
SEO外链推广,为什么除了内容,页面链接也很重要?
Python 新建文件夹与复制文件夹内所有内容
摘要总结:本篇文章主要介绍了如何使用Python的os和shutil模块实现新建文件夹以及将指定文件夹下的所有内容拷贝到另一个目录的功能。主要包括两个部分:1. 使用os.path.exists判断路径是否存在,再使用os.makedirs创建多级目录;2. 利用shutil.copytree函数实现文件的拷贝。
chaibubble
2018/01/02
2K0
黑盒测试的测试方法有哪些_黑盒测试包含哪些测试内容
一般我们在做软件测试的时候,会遇到黑盒测试,白盒测试,我们今天主要说的是黑盒测试的 主要测试方法有那些。接下来就是干货了。
全栈程序员站长
2022/11/01
1.8K0
黑盒测试的测试方法有哪些_黑盒测试包含哪些测试内容
Git的.ssh文件夹内容介绍
版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/52903815
Tyan
2019/05/25
9950
Jupyter病毒重出江湖:寄生于MSI安装程序
以色列动态防御技术公司Morphisec的网络安全研究院日前发布报告,称去年活跃于互联网的Jupyter病毒程序出现了新版本,它仍然狡猾地隐身于各个程序中,窃取用户数据。
FB客服
2021/10/11
8270
【说站】php有哪些文件包含漏洞
1、LFI,本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏洞都是LFI。
很酷的站长
2022/11/23
8230
PCIe中MSI和MSI-X中断机制
在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制。而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息。
碎碎思
2021/08/10
2.2K0
PCIe中MSI和MSI-X中断机制
首批区块链信息备案中,除了BATJ外,还有哪些值得深挖亮点?
近日,国家网信办官网发布第一批境内区块链信息服务备案编号。这是2019年2月15日《区块链信息服务管理规定》(以下简称《管理规定》)正式实施以来,国家互联网信息办公室依法依规组织开展备案审核工作。
区块链大本营
2019/04/28
8610
首批区块链信息备案中,除了BATJ外,还有哪些值得深挖亮点?
php 遍历目录树 (包含空文件夹列表 + 仅有文件列表)
躺平程序员老修
2023/09/05
2150
点击加载更多

相似问题

使用“file”将第2行和第7行打印到文件中

10

如何将200行文件中的第10行到第100行转换为新文件

30

替换匹配模式中的第n行

10

解析csv文件以根据列值中的匹配字符集筛选行

30

删除csv文件中不匹配所需格式的行

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文