2011-04-15 39 views
1

我在Visual Studio 2008中使用vb.net。我已经设置了一个模块的公共子内部,我试图让多个线程用来更新一个富文本框。vb模块内网络调用

我通常会使用ME.INVOKEREQUIRED ....但它告诉我“ME”在模块内无效。

难道有人请在这里指出正确的方向吗?

+0

我们能不能请你看看你的'模块'代码?看起来你很奇怪你试图从一个'Module'访问UI代码。 – 2011-04-15 00:16:29

+0

hey paul如果你还在看这个,我没有这里的代码,但即时通讯使用这个函数来更新我的程序在这个richtext框中做的更新,即时通讯使用5 +线程,我希望每个线程都能够报告进度或错误或什么这个文本框,我希望只是使一个模块中的共享子来处理所有这一切。 – tye 2011-04-15 18:54:54

+0

我想我看到你在追求什么。您可能只需要对您希望在模块中获得输出的表单的引用。尽管如此,我还是不会使用模块,但共享方法是可以的。而且,管理这种事情有很多种方法。这是其中之一。 – 2011-04-15 19:07:58

回答

2

您需要检查RichTextBox实例的InvokeRequired属性。

2

没错。 VB Module是一个静态类,Me关键字对它没有意义。您需要一个class的实例才能使用Me。它也必须来自控制,如果你打算电话InvokeRequired。您可能需要从模块创建并打开Form

看看这篇关于Accessing Controls from Worker Threads的VB文章开始。

顺便说一句,我认为模块是一个可怕的想法,不应该在应用程序的入口点代码之外使用。静态类很有用,但Module不仅是静态的,而且是全局的。即其所有成员均可全球访问。这种情况可能会变得非常棘手......