private void Do_Copy_OR_Move_Helper(Boolean copy, IListItemEx destination, IShellItem[] items) {
var handle = this.Handle;
var thread = new Thread(() => {
var fo = new IIFileOperation(handle);
foreach (var item in items) {
if (copy)
fo.CopyItem(item, destination);
else
fo.MoveItem(item, destination, null);
}
fo.PerformOperations();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}