2015-06-21 4 views
0

У меня возникла проблема с вызовом метода из моего DataService в моей ViewModel. Проблема заключается в том, что каждый метод, который я создаю в моей DataServicd-реализации, получает Async в моей модели ViewModel, поэтому я не могу получить от него никаких данных. Я не очень хорошо знаком с WCF, поэтому я не могу решить проблему самостоятельно.WCF Service Method всегда Async

Это DataService-интерфейс:

[ServiceContract] 
public interface IDataService 
{ 

    [OperationContract] 
    ObservableCollection<object> GetStartPageKPIObjects(); 

    [OperationContract] 
    Object DoSomething(); 
} 

Это мой DataService Реализация

public class DataService : IDataService 
{ 
    public ObservableCollection<object> GetStartPageKPIObjects() 
    { 
     ObservableCollection<object> tempItems = new ObservableCollection<object>(); 

     .........tempItems.add(...) 
     .........tempItems.add(...) 

     return tempItems; 
    } 




    public object DoSomething() 
    { 
     return new Object(); 
    } 
} 

Это, как я получаю ссылку на объект в DataService:

******.ServiceReference.DataServiceClient dataClient = new ******.ServiceReference.DataServiceClient(); 

Теперь я хотел бы получить доступ к данным от моей службы:

dataClient.GetStartPageKPIObjectsAsync(); 
dataClient.DoSomethingAsync(); 

Но оба возвращают (awaitable) Task<object>! Как мне получить данные из службы?

ответ

0

Существуют и неасинхронные методы, возможно, вы их не видели. Вы можете отключить генерацию асинхронных методов в настройках ref ref. Затем они полностью исчезают.

+0

Нет, это проблема, я не могу отключить их, потому что я программирую приложение для магазина Windows, и там вы не можете отключить асинхронные вещи. – romaneso

+0

Хорошо, вы можете вызвать Task.Result или Task.Wait по этим задачам? Это возможно в Windows Store? Однако, вероятно, вы должны использовать ожидание. Это замечательно в приложениях с графическим интерфейсом. – usr

+0

Да, я могу! Результат возможен! – romaneso