private void ServiceJoined(IProvider sender, ServiceJoinedEventArgs args) { /// Try to create and keep own object (MyService) and release AllJoyn service ComObjects (args.Service) /// --> No effect though. /// Some interfaces are still null. /// To be precise: Only one AllJoyn device offers its interfaces, for all other devices interfaces is null. /// This behavior is deterministic. Given the same set of AllJoyn devices always the same device can be used. /// Order of detection does not matter. Maybe it is the alphabetic order of some property which matters? /// d /// Note: While using these dummy objects does not allow invoking AllJoyn actions, it seems to be good /// to dispose the ComObjects. OpenAlljoynExplorer hangs/freezes less often than with the ComObjects. /// Most important, the warning below about "AllJoyn device simulator" does not apply when using /// own objects. (The disposing of the ComObjects is not mandatory!) /// //var asyncOkay10 = Dispatcher.Dispatch(() => //{ // try // { // var service = new AllJoynService(new MyService(args.Service)); // VM.AllJoynServices.Add(service); // } // catch (Exception ex) // { // System.Diagnostics.Debug.WriteLine(ex); // } //}); //ReleaseServiceComObject(args.Service); //return; // Warning! If there are too many devices or a bad device, OpenAlljoynExplorer will freeze on refreshing. // MainThread hangs in external code. Probably DeviceProvider is misbehaving. Not sure though. // This always happens when "AllJoyn device simulator" is mocking a device. Task mytask = Task.Run(() => { AllJoynService service = null; try { service = new AllJoynService(args.Service); var asyncOkay1 = Favorite.SetAvailableFavorite(VM.Favorites, service); var asyncOkay2 = service.ReadIconAsync(); //service.ReadAll(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); return; } var asyncOkay3 = Dispatcher.Dispatch(() => { try { VM.AllJoynServices.Add(service); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } }); }); }
private void ListView_ItemClick(object sender, ItemClickEventArgs e) { AllJoynService allJoynService = e.ClickedItem as AllJoynService; this.Frame.Navigate(typeof(ObjectListPage), allJoynService); }