wcf data service [webGet] метод, возвращающий int - как читать int? - PullRequest
1 голос
/ 15 декабря 2011

У меня есть метод службы данных WCF [WebGet], возвращающий int. (нет товаров в таблице товаров)

Как я могу прочитать это результат? Метод работает, я проверил в браузере.

     public void ProductsCount()
    {
        ctx.BeginExecute<int>(new Uri(uriBase + "/GetNoProducts"), GetProductsCountCompleted, ctx);
    }
    public void GetProductsCountCompleted(IAsyncResult result)
    {
        inventory_db_bigEntities context=result.AsyncState as inventory_db_bigEntities;
        var x = context.EndExecute<int>(result);

       //how do i read the int out of the x variable        
    }

UPDATE

Может быть, BeginExecute и EndExecute не подходят для этого.

В окне браузера метод webget возвращает:

" 223863 "

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Страница MSDN для IAsyncResult использует BeginInvoke вместо BeginExecute, а затем вызывает EndInvoke для получения значения:

// The asynchronous method puts the thread id here.
int threadId;

// Create an instance of the test class.
AsyncDemo ad = new AsyncDemo();

// Create the delegate.
AsyncMethodCaller caller = new AsyncMethodCaller(ad.TestMethod);

// Initiate the asychronous call.
IAsyncResult result = caller.BeginInvoke(3000, out threadId, null, null);

...

// Wait for the WaitHandle to become signaled.
result.AsyncWaitHandle.WaitOne();

// Perform additional processing here.
// Call EndInvoke to retrieve the results.
string returnValue = caller.EndInvoke(out threadId, result);
0 голосов
/ 15 декабря 2011

Что не так с вашим примером? EndExecute должен сделать трюк ... просто вызовите FirstOrDefault (), чтобы получить примитивное значение. Кроме того, если вы не используете SL, вы можете сделать это синхронно:

http://msdn.microsoft.com/en-us/library/hh230677.aspx#ExecutePrimitiveValue

...