我正在编写DLL,我想将一些数据写入文件(150k +)
问题是 - WriteFile没有编写它应该编写的所有内容
看起来线程在WriteFile完成其工作之前被终止。
任何想法?感谢
答案 0 :(得分:3)
如果在线程完成之前退出进程,则所有其他线程将被终止(来自ExitProcess):
退出流程导致 以下内容:
- 进程中的所有线程,调用线程除外, 终止他们的执行没有 收到DLL_THREAD_DETACH 通知。
- 在步骤1中终止的所有线程的状态变为信号。
- 所有加载的动态链接库(DLL)的入口点函数 使用DLL_PROCESS_DETACH调用。
- 在所有附加的DLL都执行了任何进程终止代码之后, ExitProcess函数终止 目前的过程,包括 调用线程。
- 调用线程的状态变为信号。
- 关闭进程打开的所有对象句柄。
- 进程的终止状态从STILL_ACTIVE更改为 流程的退出值。
- 处理对象的状态变为信号,满足任何状态 那些一直在等待的线程 终止过程。
醇>
您需要显式等待执行WriteFile的线程完成,通常是通过WaitForSingleObject(thread handle, ...)
。