最近我們把vs2003的Windows Form程式升級到vs2005下
在升級的過程式發生一個和執行緒有關的問題

在執行階段,系統丟出一個錯誤訊息
訊息名稱為『進行對 Windows Form 控制項的安全執行緒呼叫』

當您發生這個錯誤時,
您應該在Windows Form的程式中有執行一個Threading的程式

這個執行緒程式會呼叫或call back(raise一個事件)
並將資料回傳給Form的某個控制項。
而.net 2.0中認定您的做法是不安全的執行緒呼叫。

請參考(http://msdn2.microsoft.com/zh-tw/library/ms171728.aspx)

小弟的解決方法如下:

        ' 建立一個Delegate事件來處理安全姓的非同步呼叫
        Delegate Sub GetMsgCallback(ByVal msg As String)
        ' 以下這個方法就是您被呼叫的method
        Public Sub GetMsg(ByVal msg As String)
                ' TextBox1就是您用來取得資料或指定資料的控制項
                If Me.TextBox1.InvokeRequired Then
                        Dim d As New GetMsg(AddressOf GetMsgCallback)
                        Me.Invoke(d, New Object() {value})
                Else
                        Me.TextBox1.Text= "應該就沒問題了"
                End If
        End Sub
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 湯瑪的吳 的頭像
    湯瑪的吳

    安達利機車行

    湯瑪的吳 發表在 痞客邦 留言(2) 人氣()