我使用DragDrop.DoDragDrop
将文件从我的C#WPF应用程序复制到Windows资源管理器。但是,实际复制文件会导致我的WPF应用程序冻结,直到复制完成。此复制操作可能持续几秒到几分钟。
DataObject dragdata = new DataObject(DataFormats.FileDrop);
System.Collections.Specialized.StringCollection sc = new System.Collections.Specialized.StringCollection();
//fill the StringCollection with filenames
dragdata.SetFileDropList(sc);
DragDrop.DoDragDrop(listviewitem, dragdata, DragDropEffects.Copy);
如何在不冻结/锁定我的应用程序的情况下调用DoDragDrop方法?我无法理解报道的异步' DataObject的实现。
答案 0 :(得分:-2)
而不是试图制作' DoDragDrop'方法异步执行,最好在不同的线程上执行文件复制,因为这将允许运行WPF应用程序UI的主线程继续运行(不冻结)而另一个线程正在执行复制文件的繁重I / O操作。完成另一个线程后,您可以通知主线程已完成显示状态消息,表明文件复制已完成。