private Boolean ThreadRun_Helper(SyncQueue<Int32?> queue, Boolean useComplexCheck, ref Int32? index) {
try {
index = queue.Dequeue();
if (index == null) {
return false;
} else {
var result = User32.SendMessage(this.LVHandle, Interop.MSG.LVM_ISITEMVISIBLE, index.Value, 0) != IntPtr.Zero;
//var itemBounds = new User32.RECT();
//var lvi = this.ToLvItemIndex(index.Value);
//User32.SendMessage(this.LVHandle, MSG.LVM_GETITEMINDEXRECT, ref lvi, ref itemBounds);
//var r = new Rectangle(itemBounds.Left, itemBounds.Top, itemBounds.Right - itemBounds.Left, itemBounds.Bottom - itemBounds.Top);
//if (useComplexCheck)
// return index < Items.Count && r.IntersectsWith(this.ClientRectangle);
//else
// return r.IntersectsWith(this.ClientRectangle);
return result;
}
} catch {
return false;
}
}