I have a process that works well when it's running against small files but gives an "Message=Managed Debugging Assistant 'ContextSwitchDeadlock' : 'The CLR has been unable to transition from COM context 0xa5b8e0 to COM context 0xa5b828 for 60 seconds." error when running against large files. I'm pretty new to VB and did some investigating and found that using Application.DoEvent seemed to be recommended. I was hoping that someone could show me an example of how to use that. If I'm executing a Sub called "Process1", how would I use the DoEvent to prevent it from timing out. Ideally I'd like to add a progress bar as well but I have ot idea on that one either. I'd appreciate any help. Please keep it simple as I'm new to VB/VS.
This is the comment from my first question showing the code. Process1 calls a sub named ArchDtlCopyFile1 which scrolls through the values in a list view, copying the files named in the items to a different location. It then calls ArchDtlCheckCopy1 to scroll through the list view again to ensure that the copy was done. It then decides if the source file should be deleted and do it if required. Finally it inserts a row in an Access table documenting the change made.
Private Sub Process1()
    If ReturnCode = 0 Then
        ArchDtlCopyFile1()
    Else
        ' MessageBox.Show("Error code coming in is: " & CStr(ReturnCode))
    End If
    If ReturnCode = 0 Then
        ArchDtlCheckCopy1()
    Else
        '  MessageBox.Show("Error code for check copy is: " & CStr(ReturnCode))
    End If
End Sub
Private Sub ArchDtlCopyFile1()
    intLVIndex = 0
    ' Copy the file from the source computer onto the NAS
    Do While intLVIndex < intMaxFileIndex
        Try
            ' Select the row from the LVFiles ListView, then move the first column (0) into strSourceFilePath and the last
            ' column (3) into strDestFilePath. Execute the CopyFile method to copy the file.
            LVFiles.Items(intLVIndex).Selected = True
            strSourceFilePath = LVFiles.SelectedItems(intLVIndex).SubItems(0).Text
            strDestFilePath = LVFiles.SelectedItems(intLVIndex).SubItems(3).Text
            My.Computer.FileSystem.CopyFile(strSourceFilePath, strDestFilePath, overwrite:=False)
        Catch ex As Exception
            ' Even if there's an error with one file, we should continue trying to process the rest of the files
            Continue Do
        End Try
        intLVIndex += 1
    Loop
End Sub
Private Sub ArchDtlCheckCopy1()
    intLVIndex = 0
    intLVError = 0
    '    ' Check each file was copied onto the NAS
    Do While intLVIndex < intMaxFileIndex
        ' Select the row from the LVFiles ListView, then move the last column (3) into strDestFilePath.
        ' Use the FileExists method to ensure the file was created on the NAS. If it was, call the
        ' ADetDelete Sub to delete the source file from the user's computer.
        LVFiles.Items(intLVIndex).Selected = True
        strSourceFilePath = LVFiles.SelectedItems(intLVIndex).SubItems(0).Text
        strDestFilePath = LVFiles.SelectedItems(intLVIndex).SubItems(3).Text
        strSourceFile = LVFiles.SelectedItems(intLVIndex).SubItems(1).Text
        Try
            If My.Computer.FileSystem.FileExists(strDestFilePath) Then
                ' Archive file was created so go ahead and delete the source file
                'If strSourceFile = myCheckFile Then
                '    strDestFile = LVFiles.SelectedItems(intLVIndex).SubItems(3).Text
                'End If
                If RBArchive.Checked = True Then
                    ArchDtlDeleteFile(strSourceFilePath)
                End If
                PrepareDtlVariables()
                ADtlAddRow()
            Else
                MessageBox.Show("File not found. " & strDestFilePath)
            End If
        Catch ex As Exception
            ErrorCode = "ARC6"
            MessageCode = "Error while checking file copy"
            ReturnCode = 8
        End Try
        intLVIndex += 1
    Loop
End Sub
 
    