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,onSucess或onError委托将被调用.
有人可以帮助解决如何编写这些问题的语法吗?
编辑:
它是4.0,我不能使用await命令
编辑2:
我使用DevForce框架来加载数据,但是为了这个示例 - 让我们做WCF服务.如何在我的接口实现中包装WCF服务调用?
另外,你认为创建这样的接口以呈现异步操作是否可以?例如,你会以不同的方式做事吗?
这里的基本思想是查询将发生在后台线程中.操作完成后,您将使用onSuccess和onError回调来报告新值.例如
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)