c# - 执行异步 RIA 服务调用时回调在哪个线程上执行?

标签 c# multithreading silverlight silverlight-4.0 wcf-ria-services

我在 Silverlight 4 应用程序中使用 RIA Services DomainContext 来加载数据。如果我使用来自 UI 线程的上下文,回调是否总是在 UI 线程上?

或者换句话说,回调总是和调用在同一个线程上吗?

下面的一些示例代码说明了场景...

    private void LoadStuff()
    {
        MyDomainContext context = new MyDomainContext ();
        context.Load(context.GetStuffQuery(), op =>
        {
            if (!op.HasError)
            {
                // Use data.

                // Which thread am I on?
            }
            else
            {
                op.MarkErrorAsHandled();

                // Do error handling

            }
        }, null
        );
    }

最佳答案

如果在UI-Thread上执行DomainContext的Load-Method,那么回调是否也在UI-Thread上执行。

当您使用 Load 返回的 LoadOperation 的 Completed-Event 时也是如此。

LoadOperation<Stuff> operation = context.Load(context.GetStuffQuery());
operation.Completed += (o, e) {
  if (!operation.HasError) {
    // Use data.

    // Which thread am I on?
  }
  else {
    op.MarkErrorAsHandled();
    // Do error handling
  }
};

关于c# - 执行异步 RIA 服务调用时回调在哪个线程上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711725/

相关文章:

multithreading - thread_guard 相当于 lock_guard/unique_lock

c - 多线程 C pthreads 模拟器的可重现随机序列

silverlight - 使用外部控件自定义 Silverlight Dataform 的命令

c# - 在 common_signin_btn_icon_dark.xml 中找不到与给定名称匹配的资源

c# - c#.net 中的 Paypal 集成

c# - 无法从 NUnit 测试中获取 index.html

Silverlight - 史诗般的图形失败(由两个三角形组成的矩形):(

c# - 需要实现属性的接口(interface)

java - 并行流中的 Fork-Join 池

c# - Silverlight 使用转换器在 ListView 中绑定(bind)对象