private async Task SetupCLSIDNodeTree(TreeNode node, bool bRefresh)
{
COMCLSIDEntry clsid = null;
if (node.Tag is COMCLSIDEntry)
{
clsid = (COMCLSIDEntry)node.Tag;
}
else if (node.Tag is COMProgIDEntry)
{
clsid = m_reg.MapClsidToEntry(((COMProgIDEntry)node.Tag).Clsid);
}
if (clsid != null)
{
node.Nodes.Clear();
TreeNode wait_node = new TreeNode("Please Wait, Populating Interfaces", InterfaceIcon, InterfaceIcon);
node.Nodes.Add(wait_node);
try
{
await clsid.LoadSupportedInterfacesAsync(bRefresh);
if (clsid.Interfaces.Count() > 0)
{
node.Nodes.Remove(wait_node);
foreach (COMInterfaceInstance ent in clsid.Interfaces)
{
node.Nodes.Add(CreateInterfaceNameNode(m_reg.MapIidToInterface(ent.Iid), ent));
}
}
else
{
wait_node.Text = "Error querying COM interfaces - Timeout";
}
}
catch (Win32Exception ex)
{
wait_node.Text = String.Format("Error querying COM interfaces - {0}", ex.Message);
}
}
}