【发布时间】:2020-07-23 23:06:51
【问题描述】:
我有一个相当复杂的窗口窗体应用程序,它管理着 2 个后台工作线程。一切都按预期运行,但我发现自己写了两次,每个后台工作人员一次,我不确定这是否需要。例如,我在其中一个 Do_Work 例程中:
Do While ThisQueue.FIleList.Count > 0
..Do some work..
Call Worker1DoSomething(SomeVar)
..Do more work..
Loop
在第二个后台工作人员的 Do_Work 例程中,我有:
Do While ThisQueue.FileList.Count > 0
..Do some work..
Call Worker2DoSomething(SomeVar)
..Do more work..
Loop
我可以让两个 Do_Work 例程都调用 1 个函数而不把事情搞砸吗?而不是两个函数:Worker1DoSomething(byval thisvar as string) 和 Worker2DoSometing(byval thisvar as string) 只有 1 个函数 WorkerFunctionDoSomething(byval thisvar as string)?
我问的最大原因是我有 8 个函数,实际上是从 Do_Work 例程调用的 4 个函数,这将大大简化代码。其中一个函数将数据写入 SQL 服务器,这也是我开始采用这种方法的主要原因。
提前感谢您的任何帮助或建议! 弗雷德
【问题讨论】:
-
这两个工作线程是否同时运行?如果是这样,您需要一些锁定方法,以避免并发、重叠、调用可能(将)不喜欢它的过程、同时使用相同的集合/对象/变量等。
-
Call关键字是为了向后兼容旧的 vb6 时代代码而存在的东西之一。没有理由在 VB.Net 中使用它,它实际上并没有做任何事情。即使是文档中的示例也可以使用括号更好地处理。 -
Jimi;是的,两个工作线程同时运行,这就是我现在这样写的原因,不希望出现任何并发或重叠问题。乔尔:旧习惯很难改掉。 :) 我不假思索地在这里输入了代码。我仍然发现自己有时会在编辑器中输入它。谢谢提醒!
标签: vb.net