我有一个 WinForms 应用程序,我想在其中执行一些长时间运行的操作,例如想象 Explorer 并行复制 2 个大文件。对于每一个长时间运行的操作,我将启动一个单独的 UI 线程(包括发送消息/Application.Run/Application.ExitThread),在其中创建IProgressDialog的实例。
我想知道 - 由于 Windows 的线程亲和力 - 将主窗体的句柄打包到 HandleRef 中并将其作为进度对话框的所有者/父级传递(位于不同的 UI 线程上)是否合法?我没有从辅助 UI 线程访问主窗口的句柄(在调试模式下没有跨线程异常),只是将它传递给本机函数。
谢谢。