基于事件的异步模式实现是否总是捕获当前的同步上下文?

内迪·意大利面

我正在浏览Bart De Smet的C#5.0 Unleashed书中的一些代码,并使用进行了研究WebClient

在下面的代码中,我注意到回调是在UI线程上执行的。我知道WebClient.DownloadStringAsyncEAP的实现会捕获current SynchronizationContext,并且一直在徘徊是否所有EAP的实现都在执行此操作,因为似乎无法指定SynchronizationContext执行回调的方式。

这是有问题的代码:

    private void loadButton_Click(object sender, EventArgs e)
    {
        var client = new WebClient();

        client.DownloadStringCompleted += (o, args) =>
            {
                if (args.Error != null)
                {
                    try
                    {
                        throw args.Error; // simply to restore structured exception handling?!
                    }
                    catch (WebException)
                    {
                        this.textBox.Text = "ERROR: " + args.Error.Message;
                    }

                    return;
                }

                // Already on the UI thread!
                this.textBox.Text = args.Result;
            };

        client.DownloadStringAsync(new Uri(@"http:\\www.rpmglobal.com"));
    }
德鲁·马什

不,绝对不是。当您WebClient's执行最终会触发事件通知您的调用时,实现确实会嗅探当前电流SynchronizationContext(例如DownloadStringAsync),但这纯粹是实现特定的,而不是EAP的保证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

异步和同步上下文

来自分类Dev

异步和同步上下文

来自分类Dev

C ++基于上下文的类实现

来自分类Dev

在检查上下文时,gensim 的 word2vec 实现是否超出了句子级别?

来自分类Dev

异步/等待-我是否使用了错误的同步上下文?

来自分类Dev

同步上下文未保留异步/等待?

来自分类Dev

C#在同步上下文中运行异步任务

来自分类Dev

同步上下文未保留异步/等待?

来自分类Dev

静态上下文在C#中是否总是单个?

来自分类Dev

在自托管模式下获取当前owin上下文

来自分类Dev

Deno是否可以跟踪异步上下文?

来自分类Dev

Python异步上下文

来自分类Dev

当前上下文错误

来自分类Dev

异步/等待-我使用了错误的同步上下文吗?

来自分类Dev

是否总是可以将实现内容管理器的类转换为使用上下文管理器装饰器的函数?

来自分类Dev

以前的实现是同步的时如何使用异步代码

来自分类Dev

同步上下文索引时出错

来自分类Dev

除非使用异步,否则Ok()在当前上下文中不存在

来自分类Dev

WCF,异步和上下文混乱

来自分类Dev

异步瀑布绑定上下文

来自分类Dev

异步上下文管理器

来自分类Dev

上下文已处理。执行异步

来自分类Dev

Kubectl JSONPath表达式基于当前上下文获取cluster.server属性

来自分类Dev

Dockerfile是否总是必须放置在构建上下文根目录中吗?

来自分类Dev

Dockerfile是否总是必须放置在构建上下文根目录中吗?

来自分类Dev

如何获取当前的IO上下文

来自分类Dev

绑定到当前绑定上下文?

来自分类Dev

Android从当前上下文获取文本

来自分类Dev

当前上下文和数据绑定