1use super::*;
2
3impl IAsyncAction {
4 pub fn get(&self) -> Result<()> {
6 if self.Status()? == AsyncStatus::Started {
7 let (_waiter, signaler) = Waiter::new()?;
8 self.SetCompleted(&AsyncActionCompletedHandler::new(move |_, _| {
9 unsafe {
11 signaler.signal();
12 }
13 Ok(())
14 }))?;
15 }
16 self.GetResults()
17 }
18}
19
20impl<T: RuntimeType> IAsyncOperation<T> {
21 pub fn get(&self) -> Result<T> {
23 if self.Status()? == AsyncStatus::Started {
24 let (_waiter, signaler) = Waiter::new()?;
25 self.SetCompleted(&AsyncOperationCompletedHandler::new(move |_, _| {
26 unsafe {
28 signaler.signal();
29 }
30 Ok(())
31 }))?;
32 }
33 self.GetResults()
34 }
35}
36
37impl<P: RuntimeType> IAsyncActionWithProgress<P> {
38 pub fn get(&self) -> Result<()> {
40 if self.Status()? == AsyncStatus::Started {
41 let (_waiter, signaler) = Waiter::new()?;
42 self.SetCompleted(&AsyncActionWithProgressCompletedHandler::new(
43 move |_, _| {
44 unsafe {
46 signaler.signal();
47 }
48 Ok(())
49 },
50 ))?;
51 }
52 self.GetResults()
53 }
54}
55
56impl<T: RuntimeType, P: RuntimeType> IAsyncOperationWithProgress<T, P> {
57 pub fn get(&self) -> Result<T> {
59 if self.Status()? == AsyncStatus::Started {
60 let (_waiter, signaler) = Waiter::new()?;
61 self.SetCompleted(&AsyncOperationWithProgressCompletedHandler::new(
62 move |_, _| {
63 unsafe {
65 signaler.signal();
66 }
67 Ok(())
68 },
69 ))?;
70 }
71 self.GetResults()
72 }
73}