C# 异步WCF数据服务/OData

C# 异步WCF数据服务/OData,c#,multithreading,wcf-data-services,odata,C#,Multithreading,Wcf Data Services,Odata,我正在尝试编写对wcf数据服务的异步调用,但不确定如何读取返回的对象 public IQueryable<T> Read(string TableName) { IQueryable<T> OdataResult=null; IAsyncResult asyncresult = context.BeginExecute<T>(new Uri("/" + TableName, UriKind.Re

我正在尝试编写对wcf数据服务的异步调用,但不确定如何读取返回的对象

public IQueryable<T> Read(string TableName)
    {
        IQueryable<T> OdataResult=null;            

        IAsyncResult asyncresult = context.BeginExecute<T>(new Uri("/" + TableName, UriKind.Relative),
            (result) =>
            {
                Dispatcher.CurrentDispatcher.BeginInvoke(new OperationResultCallback(delegate
        {

            var result1 = new DataServiceCollection<T>(context.EndExecute<T>(result));

            OdataResult = result1.AsQueryable<T>();

        }), null);
            }, null);

        asyncresult.AsyncWaitHandle.WaitOne();

        asyncresult.AsyncWaitHandle.Close();

        return OdataResult;}
publicIQueryable读取(字符串表名)
{
IQueryable OdataResult=null;
IAsyncResult asyncresult=context.BeginExecute(新Uri(“/”+表名,UriKind.Relative),
(结果)=>
{
Dispatcher.CurrentDispatcher.BeginInvoke(新操作结果调用(委托
{
var result1=新的DataServiceCollection(context.EndExecute(result));
OdataResult=result1.AsQueryable();
}),空);
},空);
asyncresult.AsyncWaitHandle.WaitOne();
asyncresult.AsyncWaitHandle.Close();
返回OdataResult;}

ODataResult总是给我空值:(

我使用了“任务”而不是“调度程序”,它通过“结果”属性与我的主线程共享数据。

我对其进行了调试,但无法获得任何线索。我猜这与线程有关,我必须将值传递给我的主线程,但不确定如何执行该操作:(