Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >备案拍照去了拍照核验点什么时候可以上传完毕?

备案拍照去了拍照核验点什么时候可以上传完毕?

提问于 2018-10-28 00:53:52
回答 1关注 0查看 239

如题所示。

回答 2

嗨喽你好

发布于 2017-12-25 08:15:39

微软建立了一个AsyncHelper(内部)类来运行异步同步。源代码如下所示:

代码语言:txt
AI代码解释
复制
internal static class AsyncHelpe
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    private static readonly TaskFactory _myTaskFactory = new 
代码语言:txt
AI代码解释
复制
      TaskFactory(CancellationToken.None, 
代码语言:txt
AI代码解释
复制
                  TaskCreationOptions.None, 
代码语言:txt
AI代码解释
复制
                  TaskContinuationOptions.None, 
代码语言:txt
AI代码解释
复制
                  TaskScheduler.Default);
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public static TResult RunSync<TResult>(Func<Task<TResult>> func)
代码语言:txt
AI代码解释
复制
    {
代码语言:txt
AI代码解释
复制
        return AsyncHelper._myTaskFactory
代码语言:txt
AI代码解释
复制
          .StartNew<Task<TResult>>(func)
代码语言:txt
AI代码解释
复制
          .Unwrap<TResult>()
代码语言:txt
AI代码解释
复制
          .GetAwaiter()
代码语言:txt
AI代码解释
复制
          .GetResult();
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public static void RunSync(Func<Task> func)
代码语言:txt
AI代码解释
复制
    {
代码语言:txt
AI代码解释
复制
        AsyncHelper._myTaskFactory
代码语言:txt
AI代码解释
复制
          .StartNew<Task>(func)
代码语言:txt
AI代码解释
复制
          .Unwrap()
代码语言:txt
AI代码解释
复制
          .GetAwaiter()
代码语言:txt
AI代码解释
复制
          .GetResult();
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
}

Microsoft.AspNet.Identity基类只有Async方法,为了将它们称为Sync,有类似扩展方法的类(示例用法):

代码语言:txt
AI代码解释
复制
public static TUser FindById<TUser, TKey>(this UserManager<TUser, TKey> manager, TKey userId) where TUser : class, IUser<TKey> where TKey : IEquatable<TKey>
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    if (manager == null)
代码语言:txt
AI代码解释
复制
    {
代码语言:txt
AI代码解释
复制
        throw new ArgumentNullException("manager");
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    return AsyncHelper.RunSync<TUser>(() => manager.FindByIdAsync(userId));
代码语言:txt
AI代码解释
复制
}
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
public static bool IsInRole<TUser, TKey>(this UserManager<TUser, TKey> manager, TKey userId, string role) where TUser : class, IUser<TKey> where TKey : IEquatable<TKey>
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    if (manager == null)
代码语言:txt
AI代码解释
复制
    {
代码语言:txt
AI代码解释
复制
        throw new ArgumentNullException("manager");
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    return AsyncHelper.RunSync<bool>(() => manager.IsInRoleAsync(userId, role));
代码语言:txt
AI代码解释
复制
}

最爱开车啦

发布于 2017-12-25 08:14:43

异步编程通过代码库“增长”。它被比作僵尸病毒。最好的解决办法是让它增长,但有时这是不可能的。

我在我的Nito.AsyncEx库中编写了几个类型来处理部分异步的代码库。尽管如此,在任何情况下都没有解决方案。

答案A

如果你有一个简单的异步方法,不需要同步到上下文,那么你可以使用Task.WaitAndUnwrapException:

var task = MyAsyncMethod();

var result = task.WaitAndUnwrapException();

你不希望使用Task.Wait或Task.Result因为包装在异常AggregateException。

此解决方案只适用于MyAsyncMethod不同步回到上下文。换句话说,每一个await在MyAsyncMethod应该结束ConfigureAwait(false)。这意味着它不能更新任何UI元素或访问ASP.NET请求上下文。

解决方案B

如果MyAsyncMethod确实需要同步回到上下文,那么你可以使用AsyncContext.RunTask提供一个嵌套的上下文:

var result = AsyncContext.RunTask(MyAsyncMethod).Result;

* 2014年4月14日更新:在更新版本的库中,API如下所示:

var result = AsyncContext.Run(MyAsyncMethod);

(Task.Result在这个例子中使用是可以的,因为RunTask会传播Task异常)。

你可能需要的原因AsyncContext.RunTask,而不是Task.WaitAndUnwrapException是因为对发生的WinForms / WPF / SL / ASP.NET一个相当微妙的僵局可能性:

同步方法调用一个异步方法,获得一个Task。

同步方法阻塞等待Task。

该async方法使用await没有ConfigureAwait。

将Task无法完成在这种情况下,因为它只有在完成async方法完成; 该async方法无法完成,因为它正试图将其延续时间安排到SynchronizationContext,并且WinForms / WPF / SL / ASP.NET将不允许继续运行,因为同步方法已经在该上下文中运行。

这是为什么尽可能ConfigureAwait(false)在每种async方法中使用它是一个好主意的原因之一。

解决方案C

AsyncContext.RunTask在任何情况下都不起作用。例如,如果async方法正在等待需要UI事件完成的事情,那么即使嵌套的上下文也会死锁。在这种情况下,您可以async在线程池中启动该方法:

var task = TaskEx.RunEx(async () => await MyAsyncMethod());

var result = task.WaitAndUnwrapException();

但是,这个解决方案需要MyAsyncMethod在线程池上下文中工作。所以它不能更新UI元素或访问ASP.NET请求上下文。在这种情况下,你可以加上ConfigureAwait(false)它的await陈述,并使用解决方案A.

和开发者交流更多问题细节吧,去 写回答
相关文章
C#同步方法转异步
最简单的方法是创建一个新的线程,创建的方法是使用 Task.Run ,请看下面代码,原来有一个函数 Delay 需要把他转换为异步,就可以使用 DelayAsync 里面用一个线程
林德熙
2022/08/04
9760
关于同步方法里面调用异步方法的探究
我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了。而且我这么写的时候,编译器没有提示任何警告。但是看了dudu的文章:一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相 了解了,这样写是有问题的。但是为什么会有问题呢?我又阅读了dudu文章里提到的一篇博文:.NET Threadpool starvation, and how queuing makes it worse 加上自己亲手实验,写下自己的理解,算是对dudu博文的一个补充和丰富吧。
ShenduCC
2020/05/01
2.6K0
C#异步调用的方法
最经公司工作需要调用一个外部的webservice,同时要将传出的数据进行保存,以自己以前的习惯,就打算逐步操作,失败啊,完全没考虑过用户体验效果,在同事指点下,意识到使用异步调用的好处,随便将自己找的一些资料留以保存,以戒后误! 我们要明确,为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了。异步如何开始,好理解,现在我们讨论的是如何结束这个异步出来的新线程。C#异步调用的好处和方法
全栈程序员站长
2022/07/15
1.3K0
C#异步调用的方法
最经公司工作需要调用一个外部的webservice,同时要将传出的数据进行保存,以自己以前的习惯,就打算逐步操作,失败啊,完全没考虑过用户体验效果,在同事指点下,意识到使用异步调用的好处,随便将自己找的一些资料留以保存,以戒后误! 我们要明确,为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。异步方法很好的解决了这些问题,异步执行某个方法,
逸鹏
2018/04/10
1.8K0
CA1849:当在异步方法中时,调用异步方法
从任务返回方法调用时,存在 Async 后缀等效项的所有方法都会生成此警告。 此外,调用 Task.Wait()、Task<T>.Result 或 Task.GetAwaiter().GetResult() 将生成此警告。
呆呆
2022/02/26
1K0
C#:Func的同步、异步调用
实际开发中,对于一些耗时较长的操作,我们往往会将其封装成异步方式调用,以加速系统响应或改善用户体验,下面是一个示例: 有一个现成的类MyMath,里面有一个Add方法:  1 public class MyMath 2 { 3 4 public int Add(int a, int b) 5 { 6 System.Threading.Thread.Sleep(5000); 7 return a +
菩提树下的杨过
2018/01/24
1.5K0
java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?
大家好,又见面了,我是你们的朋友全栈君。 你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧! 1、利用Spring的异步方法去执行
全栈程序员站长
2022/09/14
4.1K0
Java 方法里面 调用异步的 方法
先把longTimeMethod 封装到Spring的异步方法中,这个方法一定要写在Spring管理的类中,注意注解@Async
一写代码就开心
2022/11/21
3.3K0
C#同步方法转异步 创建新线程AMP 转 EAP
最简单的方法是创建一个新的线程,创建的方法是使用 Task.Run ,请看下面代码,原来有一个函数 Delay 需要把他转换为异步,就可以使用 DelayAsync 里面用一个线程
林德熙
2018/09/18
7030
C#同步方法转异步 创建新线程AMP 转 EAP
最简单的方法是创建一个新的线程,创建的方法是使用 Task.Run ,请看下面代码,原来有一个函数 Delay 需要把他转换为异步,就可以使用 DelayAsync 里面用一个线程
林德熙
2019/03/12
5660
C# 调用PowerShell方法
PowerShell应为编写和运行都很方便,所以为了重复利用,经常写了一些小方法或者PS代码片段。使用的时候可能会很难找到自己想要的那个方法,如果要是有一个界面把这些代码管理起来并且调用,那就很爽了 1.创建一个powershell的方法,供C#调用,方法很简单,两个数的加法运算 1 function Sum 2 { 3 param([int]$first, [int]$second) 4 $result = $first + $second 5 return $result 6 }  2. 在C#的控制台
数据分析
2018/03/01
3.6K0
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm
跟着阿笨一起玩NET
2018/09/18
8.6K0
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
SpringBoot 整合异步调用方法
1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能
北漂的我
2019/05/29
1.4K0
如何在SpringBoot中异步请求和异步调用
可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应。
架构师修炼
2020/07/20
2.1K0
如何在SpringBoot中异步请求和异步调用
如何在SpringBoot中异步请求和异步调用
链接 | cnblogs.com/baixianlong/p/10661591.html
JavaFish
2020/02/19
1.8K0
如何在SpringBoot中异步请求和异步调用
微信小程序 同步方法与异步方法对比
微信小程序 同步方法与异步方法对比
Java架构师必看
2021/09/23
1.2K0
微信小程序 同步方法与异步方法对比
C# dotnet 使用 TaskCompletionSource 让事件转异步方法
咱今天来聊聊一个毁灭世界的故事,哦,不,是一个使用 TaskCompletionSource 让偷核武器,哦,又说错了,是让事件转换为异步的方法,让咱可以在一个方法里面顺序写下毁灭世界的逻辑
林德熙
2020/07/06
8300
C#中方法的调用
* 类型需要一致,double--float,子类可以替换父类(反例) * 数量需要一致,params,还可以有默认值(反例) * 顺序需要一致 ,可以使用“参数=值”的方式,可选参数必须出现在所有必选按参数之后。 * 如果某个参数使用了(参数:值)的方式,那么之后的所有参数也必须使用这种格式。
zls365
2020/08/19
1.3K0
同步调用和异步调用
对于同步与异步来说,好多人与我在初学的时候一样,肯定是一脸蒙x。不过没关系,慢慢来,我将我见到和理解的和大家分享一下,希望对大家有所帮助。
小闫同学啊
2019/07/18
1.5K0
点击加载更多

相似问题

腾讯im中查看图片,想设置成跟微信一样,点击放大,左滑右滑实现图片轮换,点击再缩小,难吗?

1413

已解散的群(group)的消息怎么查看展示?

1356

小程序开发工具,点击腾讯云,显示Appid 未授权 给腾讯云 ,点击确定查看文档,如何解决?

0451

已完成按钮点击不了?

2229

如何查看短信回复的内容?

1294
相关问答用户
萃橙科技 | 合伙人擅长4个领域
腾讯 | 技术专家擅长2个领域
擅长3个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档