# 应用启动问题修复说明

## 问题描述
运行 `npm run dev` 时，程序在启动过程中立即退出，日志显示：
```
13:03:04.627 > 应用启动，日志文件路径: C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log
Process finished with exit code 0
```

## 问题原因分析
1. **WebSocketClient 过早初始化**：在应用启动时立即创建 WebSocket 连接，但此时可能缺少必要的配置信息
2. **异步操作处理不当**：`app.whenReady()` 是异步的，但程序在等待完成前就退出了
3. **错误处理不完善**：某些同步操作可能抛出异常导致程序退出
4. **缺少启动状态日志**：无法确定程序在哪个阶段退出

## 修复内容

### 1. 延迟 WebSocket 连接创建
- 将 WebSocketClient 的创建延迟到应用完全启动后
- 添加错误处理和重试机制
- 避免在应用启动时立即连接

### 2. 改进错误处理
- 为所有可能失败的同步操作添加 try-catch
- 改进未捕获异常的处理，不立即退出程序
- 添加详细的错误日志

### 3. 增加启动日志
- 添加详细的启动过程日志
- 记录每个关键步骤的执行状态
- 便于定位问题所在

### 4. 修复异步操作
- 确保 `app.whenReady()` 正确等待
- 添加启动完成确认日志
- 改进事件监听器的设置

## 修复后的启动流程

### 启动日志示例
```
[时间] 当前运行平台: win32
[时间] Windows 系统，设置控制台编码为 UTF-8
[时间] Store 初始化成功
[时间] 硬件加速已禁用
[时间] 应用启动，日志文件路径: [路径]
[时间] 开始检查单实例锁...
[时间] 单实例锁检查结果: true
[时间] 这是第一个实例，继续启动
[时间] 应用已准备就绪，开始初始化...
[时间] 应用初始化完成
[时间] WebSocket连接已打开 (延迟2秒后)
```

### 关键修复点

#### 1. WebSocketClient 延迟创建
```javascript
// 延迟创建WebSocket连接
setTimeout(() => {
  createWebSocketClient()
}, 2000); // 延迟2秒创建WebSocket连接
```

#### 2. 错误处理改进
```javascript
// 改进未捕获异常处理
process.on('uncaughtException', (error) => {
  logger.error('未捕获的异常:', error);
  // 不要立即退出，给应用一个恢复的机会
  logger.error('应用遇到未捕获的异常，但将继续运行');
});
```

#### 3. 同步操作保护
```javascript
try {
  app.disableHardwareAcceleration()
  logger.info('硬件加速已禁用')
} catch (error) {
  logger.error('禁用硬件加速失败:', error)
}
```

## 验证修复效果

### 1. 检查启动日志
运行 `npm run dev` 后，查看控制台输出，应该能看到完整的启动日志，包括：
- 应用准备就绪
- 初始化完成
- WebSocket 连接成功

### 2. 检查应用状态
- 应用应该正常启动并显示主窗口
- 托盘图标应该正常显示
- 不应该出现 "Process finished with exit code 0" 的提前退出

### 3. 检查日志文件
查看日志文件 `C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log`，应该包含完整的启动过程记录。

## 测试脚本

### 启动测试
```bash
# 运行应用
npm run dev

# 检查日志
tail -f "C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log"
```

### 功能测试
1. 应用启动后，右键点击托盘图标
2. 选择"查看日志"验证日志功能
3. 选择"清除缓存"验证缓存清理功能

## 注意事项

### 1. 开发环境
- 在开发环境中，应用可能需要更长时间启动
- WebSocket 连接可能会因为缺少配置而失败，这是正常的
- 查看日志文件获取详细的错误信息

### 2. 生产环境
- 确保所有必要的配置都已设置
- WebSocket 连接应该能够正常建立
- 应用应该能够稳定运行

### 3. 调试建议
- 如果仍然有问题，查看日志文件中的详细错误信息
- 检查配置文件是否正确设置
- 确认网络连接是否正常

## 相关文件
- `src/main/index.js` - 主进程启动文件
- `src/main/utils/WebSocketClient.js` - WebSocket 客户端
- `src/main/utils/logger.js` - 日志工具
- `test-startup.js` - 启动测试脚本 