2017-09-25 1 views
0

저는 C# WPF 응용 프로그램에서 Windows 탐색기로 파일을 복사하는 데 DragDrop.DoDragDrop을 사용합니다. 그러나 실제로 파일을 복사하면 복사가 완료 될 때까지 WPF 응용 프로그램이 고정됩니다. 이 복사 작업은 몇 초에서 수 분 동안 지속될 수 있습니다.DragDrop.DoDragDrop async를 만드는 방법은 무엇입니까?

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

어디에서 응용 프로그램이 고정 되나요? 마우스를 놓았습니까? 다른 사람이 귀하를 도울 수있게하려면 질문 할 때 문제를 알려주십시오. https://stackoverflow.com/help/mcve – mm8

답변

-2

'DoDragDrop'메서드를 비동기 적으로 수행하는 대신 다른 스레드에서 파일 복사를 수행하는 것이 좋습니다. 이렇게하면 WPF 응용 프로그램의 UI를 실행하는 주 스레드가 계속 진행할 수 있습니다. 다른 스레드가 파일 복사 중 과도한 I/O 작업을 수행하는 동안 실행 (동결 없음) 다른 스레드가 완료되면 주 스레드에 완료되었음을 알리고 파일 복사가 완료되었다는 상태 메시지를 표시 할 수 있습니다.

+0

파일을 복사하는 중대한 작업은 Windows 탐색기에서 처리되므로 넘어서야합니다. 내 통제. – Peter

+0

하지만 드래그 된 파일을 '놓기'작업을 수행하는 코드를 작성하면이 경우처럼 파일 복사 동작을 호출하는 코드를 작성했다고 생각합니다. 'Private void StackPanel_Drop (객체 보낸 사람, DragEventArgs e) { // 파일 복사 방법을 호출하기 전에 코드. // 파일을 복사하는 방법입니다. File.Copy (일부 매개 변수); }' – Khaimeng

관련 문제