Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [VB.NET] Servizi NT

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226

    Servizi NT

    Ciao

    ho bisogno di un aiuto per create un servizio NT.

    Il programma dato un determinato percorso deve accorgersi che in una determinata cartella specificata in un file xml, quando viene salvato un nuovo file in questa cartella il servizio deve prendersi il file e passare i record ad una store procedure di un database sql.


    Però non sono pratica.......... è il primo che creo ........

    Mi date una mano ???

    All'ora nel onstart devo mettere l'istanza Thread...... dove posso trovare un esempio ??

    grazie a tutti quelli che mi aiuteranno, quando ci si avvicina ad una tecnologia di programazione nuova è sempre tanto difficile capire bene come muoversi

  2. #2
    Ma..che linguaggio usi?!?!

    Cmq per l'esempio prova qualunque motore di ricerca..

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    uso VB.net

    Ho provato nei motori di ricerca :-)
    ma non trovo nessun esempio che faccia al caso mio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    Ho provato a studiare un pò
    ed ho scritto qualcosa però ho dei dubbi ..........


    Il codice che ho scritto:
    codice:
    Public Class Service1
        Public filename As String
        Public watchfolder As FileSystemWatcher
    
        Private Shared Function LoadConfiguration(ByVal FilediConfigurazione As String) As DataTableCollection
            Dim Configuration_Dataset As New DataSet()
            Try
                Configuration_Dataset.ReadXml(FilediConfigurazione)
            Catch ex As Exception
            End Try
            Return Configuration_Dataset.Tables
        End Function
    
        Protected Overrides Sub OnStart(ByVal args() As String)
            'inserire il codice per far partire l'aplicazione 
            ' es   objEventLogWatcher = New EventLogWatcher
            'myEventLog.StartWatcher()
    
            Dim DT As DataTableCollection
            DT = LoadConfiguration("\Config.xml")
            filename = System.Convert.ToString(DT("configuration").Rows(0)("ConFileName"))
    
    
    
            Dim FSW As New System.IO.FileSystemWatcher()
            FSW.Path = filename
            FSW.IncludeSubdirectories = True
            FSW.NotifyFilter = IO.NotifyFilters.DirectoryName Or _
                                   IO.NotifyFilters.FileName
    
            'IO.NotifyFilters.LastAccess Or _
            'IO.NotifyFilters.LastWrite Or _
    
            AddHandler FSW.Created, AddressOf OnCreated
    
        End Sub
    Adesso ho un dubbio tremendo,
    ho letto che in 'OnStart' bisognerebbe inserire solo l'istanza di oggetto per far partire il servizio........ io invece ho inserito anche il codice per prelevare il filemane dal webconfig.....

    Mi date un'occhiata se così è giusto ugualmente :-)

    Poi la classe DirectoryName e filename è giusto come metodo per intercettare la creazione di file o cartelle ???

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da s.ef
    ho letto che in 'OnStart' bisognerebbe inserire solo l'istanza di oggetto per far partire il servizio........ io invece ho inserito anche il codice per prelevare il filemane dal webconfig.....
    Puoi sicuramente leggere quell'informazione nell'OnStart ma tieni presente che la OnStart viene eseguita solamente all'avvio del servizio. Se qualcosa varia nel tuo config, affinche' venga riletto, devi fermare e riavviare il servizio.

    Poi la classe DirectoryName e filename è giusto come metodo per intercettare la creazione di file o cartelle ???
    Non capisco questa tua domanda ... la classe e' la FileSystemWatcher ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    si la classe è quella.........
    solo che non ero sicura che istanziando DirectoryName e filename rilevasse la creazione di file e cartelle ........

    e non la sola modifica ........

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti rimando alla documentazione della classe

    filesystemwatcher
    http://msdn.microsoft.com/it-it/libr...er(VS.80).aspx

    per chiarimenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    .............mi hanno chiesto di mettere il processo dentro un thread............

    quanche suggerimento su come si instanzia ???
    ho provato così ma mi da errore come devo fare in modo corretto ???


    codice:
       Dim T As Thread = New Thread(Tprimario)
    Tprimario.Start()

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    allora ho fatto così................. in teoria dovrebbe andare


    codice:
    Imports System.Diagnostics
    Imports System.ServiceProcess
    Imports System.Threading
    Imports System.IO
    
    Public Class Service1
        Public objDB As System.Data.OleDb.OleDbConnection
        Public filename As String
        Public watchfolder As FileSystemWatcher
    
        Protected Overrides Sub OnStart(ByVal args() As String)
            'inserire il codice per far partire l'aplicazione 
            ' es   objEventLogWatcher = New EventLogWatcher
            'myEventLog.StartWatcher()
            Dim Tint As Thread
            Tint = New Thread(AddressOf Me.Tprimario)
            Tint.Start()
    
            'mettendolo qui parte solo al primo avio del servizio
            'Dim DT As DataTableCollection
            'DT = LoadConfiguration("\Config.xml")
            'filename = System.Convert.ToString(DT("configuration").Rows(0)("ConFileName"))
    
    
    
           
    
        End Sub
        Private Sub Tprimario()
            Dim DT As DataTableCollection
            DT = LoadConfiguration("\Config.xml")
            filename = "c:\prova\"
            'System.Convert.ToString(DT("configuration").Rows(0)("ConFileName"))
    
    
            Dim FSW As New System.IO.FileSystemWatcher()
            FSW.Path = filename
            FSW.IncludeSubdirectories = True
            FSW.NotifyFilter = IO.NotifyFilters.DirectoryName Or _
                                   IO.NotifyFilters.FileName
    
            'IO.NotifyFilters.LastAccess Or _
            'IO.NotifyFilters.LastWrite Or _
    
            AddHandler FSW.Created, AddressOf OnCreated
        End Sub
    
        Private Shared Function LoadConfiguration(ByVal FilediConfigurazione As String) As DataTableCollection
            Dim Configuration_Dataset As New DataSet()
            Try
                Configuration_Dataset.ReadXml(FilediConfigurazione)
            Catch ex As Exception
            End Try
            Return Configuration_Dataset.Tables
        End Function
    
        Private Sub OnCreated(ByVal sender As Object, ByVal e As IO.FileSystemEventArgs)
    
            'Crea una matrice di tre stringhe
            Dim PercorsoFile As String
            Dim TipoCambiamento As String
    
            'A ogni stringa assegna un determinato valore:
    
            PercorsoFile = e.FullPath               'Assegna il percorso del file o directory
            TipoCambiamento = e.ChangeType.ToString    'Assegna il tipo di cambiamento
            InvioDati(PercorsoFile)
    
            If File.Exists(PercorsoFile) Then
    
            End If
    
    
    
        End Sub
    
        Protected Overrides Sub OnStop()
            ' chiude l'applicazione
            'es   myEventLog.StopWatcher()
            'objEventLogWatcher.Dispose()
    
    
        End Sub
    
        Private Sub InvioDati(ByVal PercorsoFile As String)
            Dim ConnectionString As String
    
            Dim DT As DataTableCollection
            DT = LoadConfiguration("\Config.xml")
            ConnectionString = System.Convert.ToString(DT("configuration").Rows(0)("ConnectionString"))
            objDB = New System.Data.OleDb.OleDbConnection
            objDB.ConnectionString = ConnectionString
            objDB.Open()
    
            'Dim filename As FileStream
            'Dim riga As String
    
    
            'If  Then
            '    filename = ControlFile
    
    
            '    Dim sr As New StreamReader(filename, System.Text.Encoding.ASCII)
            '    While sr.Peek > 0
            '        riga = sr.ReadLine
            '        If riga.Length > 0 Then
            '            Dim campi() As String
            '            campi = riga.Split(";")
    
            '            Try
            '                Dim testCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("ImportaDati", objDB)
            '                testCMD.CommandType = CommandType.StoredProcedure
    
            '                Dim param1 As OleDb.OleDbParameter
            '                param1 = testCMD.Parameters.Add("param1", OleDb.OleDbType.VarWChar, 50)
            '                param1.Direction = ParameterDirection.Input
            '                param1.Value = campi(0)
    
            '                Dim param2 As OleDb.OleDbParameter
            '                param2 = testCMD.Parameters.Add("param2", OleDb.OleDbType.VarWChar, 50)
            '                param2.Direction = ParameterDirection.Input
            '                param2.Value = campi(1)
    
            '                testCMD.ExecuteNonQuery()
    
            '            Catch ex As Exception
            '            End Try
            '        End If
            '    End While
            '    sr.Close()
            'End If
    
    
            objDB.Close()
        End Sub
    
    
    End Class


    In pratica non lo sò perchè non riesco ad andare in debug

    Volevo chiedervi:
    - Date un'occhiata se a voi sembra corretto......... naturalmente poi posso mettere la risorsa disponibile per chi ne avesse bisogno...... postando codice e funzionamento

    - Ho provato a fare come era scritto nella guida postata all'inizio.....ma io non ho quel processo di sistema a cui attacarmi..
    posso usarne uno qualsiasi?
    Come devo scegliere?

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.