螺纹铸造结构 [英] cast structure in thread

查看:67
本文介绍了螺纹铸造结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个尝试在后台工作人员案例中使用的结构,但是我没有成功

private Jobs as list(of jobitems)
Structure JobItem
        Dim Index As Integer
        Dim Url As String
        Dim Status As String
End Structure



我收到此错误

TryCast'' operand must be reference type, but is a value type



在后台工作人员

 Private Sub DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
        Dim worker As BackgroundWorker = TryCast(sender, BackgroundWorker)
        Dim workItem As String = TryCast(e.Argument, String)

        If worker IsNot Nothing AndAlso workItem IsNot Nothing Then
            ''Process the work item here.
            Dim jb As New JobItem
            jb.Status = "Starting" & Jobs(CInt(workItem)).Url
            worker.ReportProgress(CInt((Jobs.Count / 100) * urlIndex), jb)
        End If
    End Sub


Private Sub ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)

 Dim jb As JobItem = TryCast(e.UserState, JobItem)

End Sub



我该如何解决,

谢谢,您必须使用CType而不是TryCast. TryCast期望您传递给引用类型的参数,但是JobItem是一个结构,这是一个值类型,因此会出现错误. CType不是这种情况.

现在应该可以使用了:

 私有  Sub  ProgressChanged( ByVal 发​​件人 As  对象 ByVal  e  As  System.ComponentModel.ProgressChangedEventArgs)
  Dim  jb  As  JobItem =  CType (e .UserState,JobItem)
结束  



:)


i have a structure that i try to case in background worker, but no success i get

private Jobs as list(of jobitems)
Structure JobItem
        Dim Index As Integer
        Dim Url As String
        Dim Status As String
End Structure



i get this error

TryCast'' operand must be reference type, but is a value type



in background worker

 Private Sub DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
        Dim worker As BackgroundWorker = TryCast(sender, BackgroundWorker)
        Dim workItem As String = TryCast(e.Argument, String)

        If worker IsNot Nothing AndAlso workItem IsNot Nothing Then
            ''Process the work item here.
            Dim jb As New JobItem
            jb.Status = "Starting" & Jobs(CInt(workItem)).Url
            worker.ReportProgress(CInt((Jobs.Count / 100) * urlIndex), jb)
        End If
    End Sub


Private Sub ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)

 Dim jb As JobItem = TryCast(e.UserState, JobItem)

End Sub



how do i fix this,

thanks

解决方案

Hi, you have to use CType instead of TryCast. TryCast expects the parameters that you have passed to of Reference Type but JobItem is a Structure which is a Value type and hence the error. Which is not the case with CType.

This should work now:

Private Sub ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
 Dim jb As JobItem = CType(e.UserState, JobItem)
End Sub



:)


这篇关于螺纹铸造结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆