2017-03-13 75 views
0

中的线程希望您可以验证我的假设或指向正确的方向。VB.NET通过标签引用

我正在开发一个小型GUI来监视可变直流电源。设备通过COM端口进行通信。为此,我创建了一个类来处理与PSU的通信。我想实现一种方法,其中调用表单(类)可以将2个标签引用传递给我的PSU类,它可以定期用电压和电流进行更新。

我已经计算出如何从主线程外部(使用Invoke)更新Label的文本,并且我已经计算出如何启动运行不带参数的方法的第二个线程。从我的阅读中,我只能将一个参数传递给参数化的线程启动。

我目前的做法是创建一个集合,并使项目成为我想要传递的那两个标签。创建和启动线程的方法接受(我认为是)指向两个标签有以下:

Public Sub monitor(ByRef vLbl As Label, ByRef aLbl As Label) 

内部的子(一些错误检查等任务后)创建一个新的集合,并添加两个标签引用:

Dim coll As Collection = New Collection() 
coll.Add(vLbl) 
coll.Add(aLbl) 

然后我在线程中传递coll。开始调用。

在另一个线程上实际运行的分,我打破了两个标签启动:

Dim _vLbl As Label = coll(0) 
Dim _aLbl As Label = coll(1) 

这是一个完善的解决问题的方法?我意识到我可以通过消除类方法并采取更多的过程来简化其中的一些方法,但我正在尝试开发我的PSU类参考,以供其他一些软件工具最终用作库。请原谅,如果我搞砸了术语,我一直没有这么做,并且试图自己教这些工作。

在此先感谢。

编辑:语法失败

回答

0

对于它的价值,这是不是我会做它,因为它违反了关注点分离。知道如何阅读PSU的代码不需要知道标签是什么或者如何更新它。将来,您可能希望使用除标签之外的其他内容,或者可能希望随时将数字存储在数据库中,或者您可能希望使用全球化方法来格式化数字(例如)。如果您曾经做过这些更改,则不必触摸PSU代码。

相反,我会创建一个对象,例如,PSUMonitor,它可以监视。 PSUMonitor将募集一个event,其中自定义EventArgs能够携带您希望跟踪的数据。

然后,您的UI表单将订阅这些事件,读取数字,然后格式化信息以将它们放在标签,两个标签,一个图表,一个表格,或任何其他您想要的内容上。

+0

我很欣赏反馈意见,我有点想到我的方法并不是最好的。在非常宽泛的笔画中,我想我会得到你在说的东西。我会试着找到一些关于如何做到这一点的信息,但是如果我找不到我能理解的任何东西,我可能会问一些问题。 – jd5684

+0

在MSDN上找到了非常好的解释,感谢提示@John Wu – jd5684