2016-04-26 18 views
1

Windowsの汎用アプリケーションでWCFサービスを呼び出そうとしていて、明らかに "GetMoments"関数を非同期に呼び出すことができます。しかし、私はObservableCollectionを満たすことができません。ユニバーサルアプリケーションでWCFサービスを呼び出す

EndpointAddress address = new EndpointAddress("net.tcp://localhost:9999/DeliveryService"); 

NetTcpBinding binding = new NetTcpBinding(SecurityMode.None); 

DeliveryClient client = new DeliveryClient(binding, address); 

Task<ObservableCollection<DeliveryMoment>> moments = client.GetMomentsAsync(); 

moments.Wait()は永遠に待ち、moments.Start()を呼び出すことはできません。これは例外をスローします。コレクションをいっぱいにするにはどうしたらいいですか?

答えて

1

await/asyncパターンでテストしてください。たとえば、

public async void Load() 
{ 
     EndpointAddress address = new EndpointAddress("net.tcp://localhost:9999/DeliveryService"); 

     NetTcpBinding binding = new NetTcpBinding(SecurityMode.None); 

     DeliveryClient client = new DeliveryClient(binding, address); 

     ObservableCollection<DeliveryMoment> moments = await client.GetMomentsAsync(); 
} 
+0

エラーが「外部ホストによって閉じられた接続」に変更されました。だから私は非同期の作品だと思う。 – Laurijssen

+0

はい。基本的なコンソールアプリケーションでこのAPIを呼び出して、同じ動作をしているかどうかを確認してください。このような場合は、ネットワークトレースを利用してこの問題のトラブルシューティングを行います。プロキシはおそらく長時間実行されている接続を閉じる可能性があります。明らかに普遍的なアプリケーションのための –

+0

は完全に実装されていません。 SecurityModeを使用してバインディングを作成することはできず、信頼性の高いセッションは使用できません。 – Laurijssen

関連する問題