【发布时间】:2016-01-20 23:19:34
【问题描述】:
我的程序会生成一个单独的子进程,该子进程执行的功能可能会运行很长时间。当子进程运行时,主线程(必须在主线程)上显示一个窗口窗体,显示子进程的进度。我需要设置 IPC 以便在主 UI 线程上传达子进程的当前进度状态。我能够建立一个匿名管道,但是有很大的滞后。有没有更快的方法的建议?我已经读到使用内存映射文件可以进一步减少延迟,但是我在设置它时遇到了麻烦。
【问题讨论】:
-
没关系,所有IPC机制都以相同的速度运行。他们都解决了同样的问题,只是方式不同。底层操作基本相同,它需要共享内存和线程上下文切换。其他方法很方便,因为您不必解决原始 MMF 需要您解决的同步问题。那种你真的不想解决的问题。命名管道和本地环回套接字也很好。 .NET 添加了远程处理和 WCF。如果您发现仅报告进度有延迟,那么您做错了。
-
您绝对必须使用单独的进程吗?你不能在你的主进程中使用工作线程吗?
-
我也希望它在一个单独的线程上,但是由于稳定性问题,这是不可能的
标签: c# process ipc shared-memory