Я делаю Спад Перетаскивания до внешнего приложения как это:
string[] files = new string[/* */];
// get files
DataObject o = new DataObject(DataFormats.FileDrop, files);
DoDragDrop(o, DragDropEffects.Copy | DragDropEffects.Move);
и некоторые приложения возьмут на себя файлы и переместятся для обработки их, и мое приложение является бесплатным сделать, это - материал, но некоторые приложения заставят МОЕ приложение заморозиться, пока это не обработает все файлы... там какой-либо способ, которым я могу обойти это? Я попытался сделать это в Потоке, но это не работало так хорошо - это не работало вообще... так, какие-либо предложения, как сделать этот код, не подвешивают мое приложение?
.NET Control .Dodragdrop - это просто WAPPER вокруг API Win32 .. (ждать этого) .. Dodragdrop
Так что у него есть те же ограничения. Dodragdrop может быть вызван только из потока, которая называла только олейинициализация
, что делает резьбную резьбу ATA (одну резьбовую квартиру).
Поскольку оно может использоваться только потоком STA, а дизайн API является синхронным, вы во власти по Mercy целевых приложений, обрабатывающих уведомления о падении. Это всего лишь часть дизайна OLE Drag и Drop и не может быть изменена. (OLE Drag и Drop был фактически разработан в дни Windows 3x, прежде чем потоки даже существуют в приложениях Windows).
Итак, вы могли бы , может быть, Сделать эту работу над другим потоком IFF, что нить является потоком STA. Возможно, вам также придется использовать взаимодействие, чтобы позвонить безразрешенному Dodragdrop
функции.