use hide_console::hide_console;
use std::thread;
use std::time::Duration;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
fn main() {
println!("Starting GUI application...");
println!("The console will be hidden now");
thread::sleep(Duration::from_secs(2));
hide_console();
let running = Arc::new(AtomicBool::new(true));
let r = running.clone();
ctrlc::set_handler(move || {
println!("Termination signal received, closing application...");
r.store(false, Ordering::SeqCst);
}).expect("Error setting up Ctrl-C handler");
println!("GUI application is running in background mode");
println!("To exit, press Ctrl+C (if console is visible) or terminate the process through task manager");
let mut counter = 0;
while running.load(Ordering::SeqCst) {
counter += 1;
if counter % 10 == 0 {
println!("Processed {} events", counter);
}
thread::sleep(Duration::from_millis(500));
}
println!("GUI application has terminated");
}