提问人:Sam Marrocco 提问时间:3/10/2023 更新时间:3/10/2023 访问量:21
如何防止 vb.net 应用程序阻止Windows源文件夹线程以进行未来的D&D操作
How to prevent vb.net app from blocking the windows source folder thread for future D&D ops
问:
我有一个 vb.net 应用程序,允许将文件拖放到其中进行处理。处理过程可能很长,但不需要全线程应用程序的额外工作。
我的应用程序的两个实例同时在桌面上运行,以允许将文件拖动到每个应用程序实例中。要拖动的文件在 Windows 文件资源管理器窗体上的文件夹中可见。将 file1 第一次拖放到我的应用程序的第一个实例中时,其行为符合预期,并开始处理。但是,当我尝试将 file2 从桌面文件资源管理器拖到应用程序的第二个实例中时,源文件资源管理器窗口不允许对第二个文件进行任何选择或拾取 - 显示一个光标,似乎表明拖放尚未发生或正在等待原始的第一次拖放完成。
我的拖放代码非常简单
Private Sub Form_DragEnter(sender As Object, e As DragEventArgs) Handles Me.DragEnter
e.Effect = DragDropEffects.Copy
End Sub
Private Sub Form_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop
Dim Complete_PathFilenames() As String = e.Data.GetData("FileDrop", False)
For Each ThisScriptFile As String In Complete_PathFilenames
PerformMyLongRunningProcess(ThisScriptFile)
Next
End Sub
除了将我的 PerformMyLongRunningProcess() 方法作为新线程或进程启动之外,有没有办法在我的应用程序中获取拖放的文件,然后立即释放我的应用程序似乎在 Windows 桌面资源管理器窗口/文件上具有的“抓地力”,以便我可以继续将源文件拖放到其他实例中(甚至继续使用该桌面文件资源管理器窗口)?
答: 暂无答案
评论
PerformMyLongRunningProcess
Task.Run