2011-04-15 41 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不僅是靜態的,而且是全局的。即其所有成員均可全球訪問。這種情況可能會變得非常棘手......