update
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user