Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [NET] Sincronizzare un metodo

    Sto provando a fare una macro su Visual Studio.NET. La funzione dovrebbe servire a fare una ricerca di alcune parole (da un file di testo) all'interno del progetto per verificare queli non siano utilizzate. Il codice c'è, però il problema e che il metodo Find.Execute è un metodo asincrono, e mi ritorna immediatamente il controllo prima diaver terminato la ricerca, e, al giro dopo ovviamente si incarta perchè dice che l'oggetto è già in uso.

    C'è un modo per rendere questo metodo sincrono o per aspettare che sia terminato?

  2. #2
    posto anche il codice
    codice:
    Option Strict Off
    Option Explicit Off
    Imports EnvDTE
    Imports System.Diagnostics
    Imports System.IO
    Imports System.Text
    
    Public Module RecordingModule
    
    
        Sub Search()
            Dim fs As FileStream
            Dim fs2 As FileStream
            Dim b(1024) As Byte
            Dim temp As UTF8Encoding = New UTF8Encoding(True)
            Try
                fs = File.Open("c:\search.txt", FileMode.Open, FileAccess.Read)
                fs2 = File.Open("c:\searchResult.txt", FileMode.Create, FileAccess.Write)
    
                Do While fs.Read(b, 0, b.Length) > 0
                    DTE.Find.SearchPath = "Entire Solution"
                    DTE.Find.FindWhat = temp.GetString(b)
                    DTE.Find.Target = vsFindTarget.vsFindTargetFiles
                    DTE.Find.MatchCase = False
                    DTE.Find.MatchWholeWord = False
                    DTE.Find.MatchInHiddenText = True
                    DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
                    DTE.Find.SearchSubfolders = True
                    DTE.Find.FilesOfType = "*.*"
                    DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
                    DTE.Find.Action = vsFindAction.vsFindActionFindAll
    
                    If Not DTE.Find.Execute() Then
                        Dim info As Byte() = New UTF8Encoding(True).GetBytes(temp.GetString(b))
                        fs2.Write(info, 0, info.Length)
                    Else
                    End If
                Loop
            Catch ex As System.Exception
                MsgBox(ex.Message)
            Finally
                fs.Close()
                fs2.Close()
            End Try
        End Sub
    End Module

  3. #3
    :quote:

  4. #4

    ultimo UP


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.