需要围绕异步操作

kat*_*tit 4 c# silverlight asynchronous devforce

我有自定义控件,我有接口这个控件暴露给它的用户.

public interface ILookupDataProvider
{
    string IdColumnName { get; }

    IEnumerable<IDataColumn> Metadata { get; set; }

    void GetDataAsync(string parameters, 
        Action<IEnumerable<object>> onSuccess, Action<Exception> onError);
}
Run Code Online (Sandbox Code Playgroud)

所以,这是我尝试公开异步操作 GetDataAsync

但我不知道如何在我的实现接口的类中实现此方法.我理解这部分,因为我有方法将执行然后onCompletion,onSucessonError委托将被调用.

有人可以帮助解决如何编写这些问题的语法吗?

编辑:

它是4.0,我不能使用await命令

编辑2:

我使用DevForce框架来加载数据,但是为了这个示例 - 让我们做WCF服务.如何在我的接口实现中包装WCF服务调用?

另外,你认为创建这样的接口以呈现异步操作是否可以?例如,你会以不同的方式做事吗?

Jar*_*Par 6

这里的基本思想是查询将发生在后台线程中.操作完成后,您将使用onSuccessonError回调来报告新值.例如

void GetDataAsync(
  string parameters, 
  Action<IEnumerable<object>> onSuccess, 
  Action<Exception> onError) {

  WaitCallback doWork = delegate { 
    try { 
      IEnumerable<object> enumerable = GetTheData(parameters);
      onSuccess(enumerable);
    } catch (Exception ex) {
      onError(ex);
    }
  };

  ThreadPool.QueueUserWorkItem(doWork, null);
}
Run Code Online (Sandbox Code Playgroud)