This commit is contained in:
lzx
2026-01-23 16:11:20 +08:00
parent e4e0e44555
commit efce651809
10 changed files with 276 additions and 77 deletions

View File

@@ -19,6 +19,7 @@ class SustainMiner {
SustainMiningConfig? _config;
MiningConfig? _miningConfig;
Timer? _monitorTimer;
StreamSubscription<void>? _processExitSubscription;
bool _isRunning = false;
bool _isPaused = false;
@@ -104,6 +105,7 @@ class SustainMiner {
_logger.info('启动持续挖矿...');
await _startMining();
_startProcessMonitor();
}
/// 停止持续挖矿
@@ -111,6 +113,8 @@ class SustainMiner {
_isRunning = false;
_monitorTimer?.cancel();
_monitorTimer = null;
_processExitSubscription?.cancel();
_processExitSubscription = null;
if (_miningManager.isMining && _miningManager.currentTask == null) {
// 只有持续挖矿任务在运行时才停止
@@ -148,6 +152,10 @@ class SustainMiner {
_logger.info('恢复持续挖矿...');
_isPaused = false;
await _startMining();
// 确保进程监控已启动
if (_processExitSubscription == null) {
_startProcessMonitor();
}
}
/// 启动挖矿
@@ -176,6 +184,26 @@ class SustainMiner {
await _miningManager.startMining(task, _miningConfig!);
}
/// 启动进程监控
void _startProcessMonitor() {
_processExitSubscription?.cancel();
// 监听挖矿进程退出事件
_processExitSubscription = _miningManager.processExitStream.listen((_) {
// 检查是否是持续挖矿进程退出
if (_isRunning && !_isPaused && !_miningManager.isMining && _miningManager.currentTask == null) {
_logger.warning('持续挖矿进程意外退出将在5秒后自动重启...');
// 延迟5秒后重启避免频繁重启
Future.delayed(const Duration(seconds: 5), () {
if (_isRunning && !_isPaused && !_miningManager.isMining) {
_logger.info('自动重启持续挖矿...');
_startMining();
}
});
}
});
}
String _trimQuotes(String value) {
var v = value.trim();
if (v.length >= 2) {