当执行异步RIA服务调用时,回调在哪个线程上执行

本文关键字:执行 线程 回调 RIA 异步 服务 调用 | 更新日期: 2023-09-27 18:11:01

我在Silverlight 4应用程序中使用RIA Services DomainContext来加载数据。如果我使用UI线程中的context,回调是否总是在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
        );
    }

当执行异步RIA服务调用时,回调在哪个线程上执行

如果在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
  }
};