我正在寻找一种通用的方法来实现长时间操作中的等待屏幕。过去我曾经使用过几次线程,但是我感觉我实施它的要么很差,要么太麻烦(并且复制/粘贴 - 恐怖!)。螺纹加载(等待)屏幕
我想尽可能保持通用和简单,所以我不需要执行加载BackgroundWorker
来处理各种废话,使事情难以维护。
这是我想做些什么 - 请注意,这可能会从什么实际上可能相差/最佳实践/不管 - 使用VB.NET,框架2.0(所以没有匿名方法):
Private Sub HandleBtnClick(sender as Object, e as EventArgs) Handles Button.Click
LoadingScreen.Show()
'Do stuff here, this takes a while!'
Dim Result as Object = DoSomethingTakingALongTime(SomeControl.SelectedObject)
LoadingScreen.Hide()
ProcessResults(Result)
End Sub
该应用程序现在完全是单线程的,因此所有内容都在GUI线程上运行。我需要能够访问DoSomethingTakingALongTime()
中的对象而不会出现跨线程异常。 GUI线程等待一些方法(需要很长时间)才能完成,而LoadingScreen
表单应该保持响应(它是动画的/有一个进度条/等)。
这是一个可行的/好的方法,还是我看到这种方式太简单了?关于这件事的最佳做法是什么?最重要的是:我怎么能实现这样一个系统?正如我已经提到,我很少有线程的经验,所以请温柔请:-)
哪个线程?该应用程序构建为单线程(= GUI线程),它已经使用Application.Run来显示主窗体。 – 2008-11-25 11:06:39