vb.net給線程傳參數(shù) C#線程傳遞參數(shù)的方式

VB.NET線程內(nèi)調(diào)用帶參數(shù)的方法異常

報(bào)錯信息是什么?截圖一下。

創(chuàng)新互聯(lián)建站長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為上街企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),上街網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

---------補(bǔ)充----------------

你這報(bào)錯與線程應(yīng)該關(guān)系不大吧,是調(diào)用COM不熟悉造成的,在項(xiàng)目屬性里面有些相關(guān)配置你研究研究。

vb.net 如何傳遞類參數(shù)

線程結(jié)束后利用委托生成事件返回,線程應(yīng)用包括傳入和傳出參數(shù)。

Public Delegate Sub ThreadCallback(value As ThreadResult)

Public Class Form1

Private WithEvents _th_1 As Thread_1

Protected Overrides Sub OnLoad(e As System.EventArgs)

Dim value As ThreadObject

value.Index = 1

Me._th_1 = New Thread_1(Me)

Me._th_1.Run(value)

MyBase.OnLoad(e)

End Sub

Private Sub Thread_1_End(sender As Object, e As ThreadEventArgs) Handles _th_1.ThreadEnd

Me.TextBox1.Text = e.Result.Text

End Sub

End Class

Public Class Thread_1

Public Event ThreadEnd(sender As Object, e As ThreadEventArgs)

Private _control As Control

Sub New(control As Control)

Me._control = control

End Sub

Public Sub Run(value As Object)

Dim th As New Threading.Thread(AddressOf ThreadProc)

th.Start(value)

End Sub

Private Sub ThreadProc(obj As Object)

Dim value As ThreadObject = CType(obj, ThreadObject)

Dim result As ThreadResult = Nothing

If value.Index = 1 Then result.Text = "測試"

Dim callback As New ThreadCallback(AddressOf ThreadInvoke)

_control.Invoke(callback, result)

End Sub

Private Sub ThreadInvoke(value As ThreadResult)

RaiseEvent ThreadEnd(Me, New ThreadEventArgs(value))

End Sub

End Class

Public Structure ThreadObject

Public Index As Integer

'Public Rect As Rectangle

End Structure

Public Structure ThreadResult

Public Text As String

'Public Rect As Rectangle

End Structure

Public Class ThreadEventArgs

Inherits System.EventArgs

Private _result As ThreadResult

Public ReadOnly Property Result As ThreadResult

Get

Return _result

End Get

End Property

Sub New(value As ThreadResult)

Me._result = value

End Sub

End Class

VB.NET中傳遞參數(shù)有哪些方式?

byval

byref

Of

Optional

ParamArray

在Visual stdio 工程中寫 public sub AA(

下面自動出現(xiàn)這五個(gè).

你這個(gè)默認(rèn)是指自動生成的方法(過程\函數(shù))嗎?

那么默認(rèn)是值傳遞Byval

要是自己寫函數(shù).則無參為默認(rèn)

vb.net 線程 如何動態(tài) address of 過程,即 "過程" 是可以用戶動態(tài)傳送的。

過程名是不可能作為參數(shù)使用的,想必你需要調(diào)用的過程是有限的,那么可以用一個(gè)變量來確定:

sub 過程名(p as integer)

Dim i As Threading.Thread

select case p

case 1

i = New Threading.Thread(AddressOf 過程1)

case 2

i = New Threading.Thread(AddressOf 過程2)

.........................

..........................

end select

i.start()

end sub

VB.net 兩個(gè)窗體之間傳遞參數(shù)

新窗體中寫

構(gòu)造函數(shù)

,然后調(diào)用。

比如你要調(diào)用的新窗體是From1.cs這個(gè)窗體,

public

Form1(要傳入的參數(shù))

{

//把傳入的參數(shù)傳入窗體中

//執(zhí)行窗體標(biāo)準(zhǔn)內(nèi)容

}

然后在需要調(diào)用的地方調(diào)用

Form1

f

=

new

Form1(傳出的參數(shù));

'--------Form1--------

Dim

f2

As

Form2

Private

Sub

Command1_Click()

Set

f2

=

New

Form2

f2.Show

vbModal

End

Sub

'--------Form1

End--------

'--------Form2--------

Dim

WithEvents

f3

As

Form3

Private

Sub

Command1_Click()

Set

f3

=

New

Form3

f3.Show

End

Sub

Public

Sub

f3_f2W()

Me.Command1.Caption

=

"f2W"

End

Sub

'--------Form2

End--------

'--------Form3--------

Public

Event

f2W()

Private

Sub

Command1_Click()

RaiseEvent

f2W

End

Sub

'--------Form3

End--------

f.Show();

如此就能實(shí)現(xiàn)調(diào)用了。

VB.net子程序傳參的困惑(ByVal 和Byref 沒有區(qū)別的時(shí)候是為什么??)

這里覺得沒有區(qū)別,是因?yàn)樵赟ubAddRow 里,我們并沒有試圖改變形參 t 本身,我們所做的改變都是 t.Rows,我們?yōu)?t 添加了行。

對于形參和實(shí)參而言,在ByVal 模式下 temTable 和 t 指向了同一塊內(nèi)存,但是這兩個(gè)變量本身并不在同一個(gè)地址上。在改變 t.Rows時(shí),由于二者都指向同一塊內(nèi)存,所以更改了t.Rows里的行數(shù)據(jù);

在ByRef模式下,temTable 和 t 就是同一塊內(nèi)存,二者在一個(gè)地址上,肯定也就指向同一塊內(nèi)存,在改變 t.Rows時(shí),就是對 temTable 的改變。

在此舉個(gè)例子:假設(shè)我們需要將 temTable 清空,那么我們還是以 t 作為形參,我們可以這樣寫:

'?ByVal?方式傳參

Private?Sub?ClearRow(ByVal?t?As?DataTable)

t?=?Nothing

End?Sub

'?ByRef?方式傳參

Private?Sub?ClearRow(ByRef?t?As?DataTable)

t?=?Nothing

End?Sub

'?并且這樣調(diào)用

Private?Sub?Button3_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button3.Click

ClearRow(temTable)

DataGridView1.DataSource?=?temTable

End?Sub

這樣,就是有區(qū)別的了。ByVal方式時(shí),雖然 t 被置為 Nothing ,但是由于 t 和 temTable 并不是一個(gè)變量,并不在同一個(gè)地址上,所以 temTable 沒有變。

而 ByRef 時(shí),t 和 temTable 就是同一個(gè)變量,在同一個(gè)地址上,t = Nothing的同時(shí),temTable 也就是Nothing了。

如果這個(gè)解釋還不清楚,可以追問。

網(wǎng)頁題目:vb.net給線程傳參數(shù) C#線程傳遞參數(shù)的方式
本文鏈接:http://muchs.cn/article40/hhesho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化網(wǎng)站導(dǎo)航、營銷型網(wǎng)站建設(shè)商城網(wǎng)站、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司