【发布时间】:2014-10-09 07:36:57
【问题描述】:
我正在编写 VB.Net (.net framework 4.5) WPF 软件,该软件具有一个不断通过网络读取数据的类,然后在数据进入时在 WPF GUI 上填充一个列表框。用户可以同时单击一个列表框项在单独的文本块中查看有关它的更多信息。
我的问题是,如何在后台执行其他操作(在不同的类中)的同时保持 GUI 的响应性和可用性?
到目前为止我的想法:
在应用程序首次运行时同时实例化 GUI 和后台类(但是它们如何交互?)
在 GUI MainWindow 中使用线程 - 但是作为另一个类中的方法,我如何让它更新 GUI?另外,我需要哪个线程代码? (这是我第一次真正尝试这样做,我之前没有在 vb.net 中做过任何代码......)
非常感谢任何建议!
这里有一些示例代码:
'GUI Class
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs)
ShowLoginScreen()
'run background thread somehow?
End Sub
Private Sub MainWindow_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
'nicely stop the background thread
End Sub
'background class
Private stopRunningFlag As Boolean = False
Private dataList As List(Of DataType)
Sub StartRunning()
Do Until stopRunningFlag.Equals(True)
For Each data As DataTypeIn dataList
'read and process data
'update GUI
Next
'read more data in
Loop
End Sub
【问题讨论】:
-
我的建议是使用线程或异步。
-
但是你的后台类没有在后台
-
是的,抱歉,我的示例不清楚 - 它不是从 GUI 读取,而是自动检查外部数据源以获取新数据。它会持续执行此操作 - 用户无需按下按钮即可实现
标签: wpf vb.net user-interface