在我的WPF应用程序中,我必须连接到远程服务器并检索/发送一些数据。
我希望在连接和通信过程中显示启动画面,并且在经过一定时间后会显示“取消操作”并且没有产生任何结果。
我希望有人可以指出我正确的方向...我正在考虑通过线程监视器,但我的应用程序非常简单和小,我不想浪费时间在如此复杂的事情上。如果有一个简单的答案我会很感激Smile | :)
注意:忘记使用简单的show或showdialog创建用户控件或窗口的想法。它不起作用。如果连接失败(我家常常发生),整个应用程序都会被冻结,甚至可以访问我用作启动画面的用户控件或窗口。对于SqlCommand.StatementCompleted事件也是如此,它也有同样的问题。
谢谢
答案 0 :(得分:0)
在您的代码隐藏或ViewModel中,创建一个IsBusy
标志,在更改时引发INotifyPropertyChanged.PropertyChanged
事件。
设置活动时间后,将此标志设置为true(可以使用Timer
实例完成此操作)。
在您的XAML中,绑定控件(例如Grid
)仅在设置标志时才可见。
在此控件中,有一个绑定到命令(或Click
事件)的取消按钮,该按钮执行它需要做的事情。
答案 1 :(得分:0)
我会使用后台工作者。
1) Load your splash screen
2) Kick off background worker to retrieve data (handle timeouts, errors in this method)
3) In your background worker completed event -close your splash screen (or display errors, etc)