我非常了解.Net和C#,但从未看过VB。
我的问题是:我们的Win32 COM库被许多客户端使用,我们发现使用VB(VB和VB.NET)库的人的失败次数高于使用VB的人。 C ++,C#或Delphi。关于我们的库的一件事是它应该仅从一个线程使用 - VB的一些线程魔法能否导致失败?
客户告诉我们不要自己创建任何额外的线程。
答案 0 :(得分:4)
VB.NET = C#,语法略有不同。说真的,你可以99%的时间将VB.NET转换为C#line-for-line。在你不知道的情况下,这两种语言都不会在你的鼻子下形成线索。
最多,如果你的客户使用带有Option Strict Off的VB.NET,那么VB.NET的后期绑定可能会导致比修复更多的问题 - 如果没有看到实际的例外情况你很难知道你是客户端报道。在任何情况下,粉笔你的客户失败,而不是熟练的程序员和他们自己的库中的错误,而不是你的代码或微软的VB.NET实现。
答案 1 :(得分:2)
通过魔法,没有。 VB.Net不会在引擎盖下做任何额外的线程。在这方面,它与C#相同。
VB6和更早版本可能会影响线程,因为它的所有对象都是STA COM对象。这不会向程序添加任何线程,而只是限制可以访问VB6对象的方式。
答案 2 :(得分:1)
一个案例是Finalize方法。 CLR从与系统的垃圾收集器部分相关联的后台线程调用它们。最有可能的是,您的用户不应该在Finalize中调用您的组件。
还要注意BackgroundWorker或委托BeginInvoke。虽然用户不会自己创建“任何额外的线程”,但这些机制在与主GUI线程分开的线程池线程上执行代码。