AllJoyn Studio - 多接口实现
AllJoyn Studio - Multiple Interface Implementation
我正在尝试实现具有多个接口的 AllJoyn 消费者。 AllJoyn 菜单从内省 xml 为所有界面创建帮助文件。添加观察者事件处理程序并为所有接口启动相同的事件处理程序后,只有第一个观察者事件处理程序被触发并完成。
例如,在 LSF 内省中,我们有四个接口,因此:
AllJoynBusAttachment bus_Consumer = new AlljoynBusAttachment();
watcher_Consumer = new LampStateWatcher(bus_Consumer);
watcher_Consumer.Added += Watcher_Consumer_Added;
watcher_Consumer.Start();
watcher_Details = new LampDetailsWatcher(bus_Consumer);
watcher_Details.Added += Watcher_Details_Added;
watcher_Details.Start();
private async void Watcher_Details_Added(LampDetailsWatcher sender, AllJoynServiceInfo args)
{
Join_Session_Details = await LampDetailsConsumer.JoinSessionAsync(args, sender);
Consumer_Details = Join_Session_Details.Consumer;
if (Join_Session_Details.Status == AllJoynStatus.Ok)
{
var LampName = await Consumer_Details.GetLampIDAsync();
Status_List.Items.Add(LampName.LampID);
}
}
private async void Watcher_Consumer_Added(LampStateWatcher sender, AllJoynServiceInfo args)
{
Join_Session = await LampStateConsumer.JoinSessionAsync(args, sender);
Consumer_Bulb = Join_Session.Consumer;
if (Join_Session.Status == AllJoynStatus.Ok)
{
LightBulbs.Add(Consumer_Bulb);
}
Consumer_Bulb.SessionMemberRemoved += Consumer_Bulb_SessionMemberRemoved;
}
在这种情况下,只有 Watcher_Consumer_Added
被触发并完成,而 Watcher_Details_Added
被触发但未完成。
我怎样才能完成这两个过程。上面的方法在consumer上实现多个接口是否正确?
P.S。 : 这是在 Windows10
上使用 VS2015 运行 的 AllJoyn Studio 扩展
第二个观察者需要一个额外的 BusAttachement。两个 watcher 不能共享同一条总线。
这是我在 MSDN 论坛上收到的答案。
相同的link在这里
AllJoyn Studio - Multiple Interface Implementation
我正在尝试实现具有多个接口的 AllJoyn 消费者。 AllJoyn 菜单从内省 xml 为所有界面创建帮助文件。添加观察者事件处理程序并为所有接口启动相同的事件处理程序后,只有第一个观察者事件处理程序被触发并完成。
例如,在 LSF 内省中,我们有四个接口,因此:
AllJoynBusAttachment bus_Consumer = new AlljoynBusAttachment();
watcher_Consumer = new LampStateWatcher(bus_Consumer);
watcher_Consumer.Added += Watcher_Consumer_Added;
watcher_Consumer.Start();
watcher_Details = new LampDetailsWatcher(bus_Consumer);
watcher_Details.Added += Watcher_Details_Added;
watcher_Details.Start();
private async void Watcher_Details_Added(LampDetailsWatcher sender, AllJoynServiceInfo args)
{
Join_Session_Details = await LampDetailsConsumer.JoinSessionAsync(args, sender);
Consumer_Details = Join_Session_Details.Consumer;
if (Join_Session_Details.Status == AllJoynStatus.Ok)
{
var LampName = await Consumer_Details.GetLampIDAsync();
Status_List.Items.Add(LampName.LampID);
}
}
private async void Watcher_Consumer_Added(LampStateWatcher sender, AllJoynServiceInfo args)
{
Join_Session = await LampStateConsumer.JoinSessionAsync(args, sender);
Consumer_Bulb = Join_Session.Consumer;
if (Join_Session.Status == AllJoynStatus.Ok)
{
LightBulbs.Add(Consumer_Bulb);
}
Consumer_Bulb.SessionMemberRemoved += Consumer_Bulb_SessionMemberRemoved;
}
在这种情况下,只有 Watcher_Consumer_Added
被触发并完成,而 Watcher_Details_Added
被触发但未完成。
我怎样才能完成这两个过程。上面的方法在consumer上实现多个接口是否正确?
P.S。 : 这是在 Windows10
上使用 VS2015 运行 的 AllJoyn Studio 扩展第二个观察者需要一个额外的 BusAttachement。两个 watcher 不能共享同一条总线。 这是我在 MSDN 论坛上收到的答案。
相同的link在这里 AllJoyn Studio - Multiple Interface Implementation