瀏覽代碼

fix: kill clash when exit in service mode, close #241

GyDi 2 年之前
父節點
當前提交
294d980b52
共有 1 個文件被更改,包括 8 次插入8 次删除
  1. 8 8
      src-tauri/src/core/service.rs

+ 8 - 8
src-tauri/src/core/service.rs

@@ -22,6 +22,9 @@ pub struct Service {
   sidecar: Option<CommandChild>,
 
   logs: Arc<RwLock<VecDeque<String>>>,
+
+  #[allow(unused)]
+  use_service_mode: bool,
 }
 
 impl Service {
@@ -31,6 +34,7 @@ impl Service {
     Service {
       sidecar: None,
       logs: Arc::new(RwLock::new(queue)),
+      use_service_mode: false,
     }
   }
 
@@ -46,6 +50,8 @@ impl Service {
         verge.enable_service_mode.clone().unwrap_or(false)
       };
 
+      self.use_service_mode = enable;
+
       if !enable {
         return self.start_clash_by_sidecar();
       }
@@ -74,14 +80,8 @@ impl Service {
     {
       let _ = self.stop_clash_by_sidecar();
 
-      let enable = {
-        let data = Data::global();
-        let verge = data.verge.lock();
-        verge.enable_service_mode.clone().unwrap_or(false)
-      };
-
-      if enable {
-        tauri::async_runtime::spawn(async move {
+      if self.use_service_mode {
+        tauri::async_runtime::block_on(async move {
           log_if_err!(Self::stop_clash_by_service().await);
         });
       }