我有一个我正在开始并想要在IDisposable.Dispose()
方法关闭的UI流程。不幸的是,似乎调用CloseMainWindow()
在启动进程后不会立即工作,因为它还没有MainWindowHandle。现在我正在使用while循环在关闭之前等待它,但它感觉不是很优雅。有没有更好的方法呢?
此外,我已经尝试WaitForInputIdle
,但不幸的是它似乎无法正常工作。
member x.Dispose() =
let (ActiveClient (_, _, p)) = x
while p.MainWindowHandle = IntPtr.Zero do
()
p.CloseMainWindow() |> ignore
修改
这是我尝试使用WaitForInputIdle
interface IDisposable with
member x.Dispose() =
let (ActiveClient (_, _, p)) = x
p.WaitForInputIdle(5000) |> ignore
p.CloseMainWindow() |> ignore
关于我试图关闭的过程的事情是,首先它产生一个提示窗口。然后在该窗口上按OK后,它会生成主窗口。这可能与它不起作用的原因有关吗?