rustdesk/libs/rust-sciter/examples/threads.rs
2021-05-23 10:55:19 +08:00

43 lines
922 B
Rust

#[macro_use]
extern crate sciter;
use sciter::Value;
struct EventHandler;
impl EventHandler {
// script handler
fn exec_task(&self, task_no: i32, progress: sciter::Value, done: sciter::Value) -> bool {
use std::{thread, time};
thread::spawn(move || {
for i in 1..100 {
// call `onProgress` callback
thread::sleep(time::Duration::from_millis(100));
progress.call(None, &make_args!(i), None).unwrap();
}
// call `onDone` callback
done.call(None, &make_args!(task_no), None).unwrap();
});
true
}
}
impl sciter::EventHandler for EventHandler {
// route script calls to our handler
dispatch_script_call! {
fn exec_task(i32, Value, Value);
}
}
fn main() {
let html = include_bytes!("threads.htm");
let mut frame = sciter::WindowBuilder::main_window()
.with_size((1200, 900))
.create();
frame.event_handler(EventHandler);
frame.load_html(html, None);
frame.run_app();
}