sandersrocket
@sandersrocket
programmer

Как открывать окно tauri только после выполнения задачи?

fn main() {
    thread::spawn(|| {
        loop {
            process();
            thread::sleep(Duration::from_secs(3));
        }
    });
// окно открывается сразу, этого быть не должно, должно открываться только в теле функции, где происходит проверка
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}


fn process() { 
 // предположим, что тут тело функции, где идет if и прочая проверка
}
  • Вопрос задан
  • 205 просмотров
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
thread::spawn возвращает экземпляр JoinHandle у которого есть метод .join() - при его вызове основной поток будет заблокирован и будет ждать завершение потока, который надо заджоинить.
fn main() {
    let thread = thread::spawn(|| {
        loop {
            process();
            thread::sleep(Duration::from_secs(3));
        }
    });
    thread.join().unwrap(); // но так как у нас в потоке будет loop - дальше выполнение не пойдёт никогда
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}


Второй вариант - ты можешь использовать std::sync::mpsc и с помощью него уже передать сообщение, что нужно создать окно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы