在执行异步RIA Services调用时,哪个线程是执行的回调?

Chr*_*ris 5 c# silverlight multithreading 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
        );
    }
Run Code Online (Sandbox Code Playgroud)

Jeh*_*hof 3

如果您在 UI 线程上执行 DomainContext 的 Load-Method,那么回调也会在 UI 线程上执行。

当您使用 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
  }
};
Run Code Online (Sandbox Code Playgroud)