BExplorer.Shell.ShellTreeViewEx.RequestTreeImage C# (CSharp) Method

RequestTreeImage() private method

private RequestTreeImage ( IntPtr handle ) : void
handle System.IntPtr
return void
		private void RequestTreeImage(IntPtr handle) {
			new Thread(() => {
				Application.DoEvents();
				Thread.Sleep(1);
				TreeNode node = null;
				IntPtr treeHandle = IntPtr.Zero;
				var pidl = IntPtr.Zero;
				var visible = false;
				if (this.ShellTreeView != null) {
					this.ShellTreeView.Invoke((Action)(() => {
						try {
							node = TreeNode.FromHandle(ShellTreeView, handle);
							treeHandle = ShellTreeView.Handle;
							if (node != null) {
								visible = node.IsVisible;
								var item = node.Tag as IListItemEx;
								if (item != null) {
									pidl = item.AbsolutePidl;
								}
							}
						}
						catch { }

					}));

					if (visible && pidl != IntPtr.Zero) {
						var nodeHandle = handle;
						Thread.Sleep(1);
						Application.DoEvents();

						SetNodeImage(nodeHandle, pidl, treeHandle, !(node.Parent != null && (node.Parent.Tag as IListItemEx).ParsingName == KnownFolders.Links.ParsingName));
					}
				}
			}).Start();
		}