Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Eventi di un Oggetto istanziato non vengono eseguiti
Forum - C# / VB.NET - Eventi di un Oggetto istanziato non vengono eseguiti

Avatar
alip1 (Normal User)
Rookie


Messaggi: 37
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 12:07
Sabato, 25/04/2020
Ho costruito la seguente classe:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.Data.SqlClient
  2. Imports System.Data.OleDb
  3.  
  4. Public Class FunDeletedLocalData
  5.  
  6.    Public Event ProgressDeleted(ByVal value As Integer)
  7.    Public Event MaxProgressDeleted(value As Integer)
  8.  
  9.    Shared DataStartAppList As List(Of DataStartAppCS)
  10.    Shared DataEndAppList As List(Of DataEndAppCS)
  11.  
  12.  
  13.    Public Sub DeleteAllDataApp()
  14.       Dim i As Integer = 0
  15.  
  16.       '**** Preparo lista Record StartApp
  17.       'DataStartAppList = New List(Of DataStartAppCS)
  18.  
  19.       ReadDataStartAppFromDBLocaleForDelete()
  20.  
  21.       RaiseEvent MaxProgressDeleted(DataStartAppList.Count)
  22.  
  23.  
  24.       For Each item As DataStartAppCS In DataStartAppList
  25.          Try
  26.             DataStartAppDB.DeleteDataStart(item.IdStartApp)
  27.          Catch ex As Exception
  28.             MessageBox.Show("error transfer data to Server: " & ex.ToString, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
  29.             Exit Sub
  30.          End Try
  31.          i += 1
  32.          RaiseEvent ProgressDeleted(i)
  33.          
  34.       Next
  35.  
  36.       '**** Preparo lista Record EndApp
  37.  
  38.       DataEndAppList = New List(Of DataEndAppCS)
  39.  
  40.       ReadDataEndAppFromDBLocaleForDelete()
  41.  
  42.       RaiseEvent MaxProgressDeleted(i + DataEndAppList.Count)
  43.  
  44.  
  45.       For Each item As DataEndAppCS In DataEndAppList
  46.          Try
  47.             DataEndAppDB.DeleteDataEnd(item.IdEndApp)
  48.          Catch ex As Exception
  49.             MessageBox.Show("error transfer data to Server: " & ex.ToString, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
  50.             Exit Sub
  51.          End Try
  52.          i += 1
  53.          RaiseEvent ProgressDeleted(i)
  54.          
  55.       Next
  56.  
  57.    End Sub
  58.  
  59.    Public Sub DeleteOnlyDataStartApp()
  60.       DataStartAppList = New List(Of DataStartAppCS)
  61.  
  62.       ReadDataStartAppFromDBLocaleForDelete()
  63.  
  64.       RaiseEvent MaxProgressDeleted(DataStartAppList.Count)
  65.  
  66.       Dim i As Integer = 0
  67.       For Each item As DataStartAppCS In DataStartAppList
  68.          Try
  69.             DataStartAppDB.DeleteDataStart(item.IdStartApp)
  70.          Catch ex As Exception
  71.             MessageBox.Show("error transfer data to Server: " & ex.ToString, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
  72.             Exit Sub
  73.          End Try
  74.          i += 1
  75.          RaiseEvent ProgressDeleted(i)
  76.          
  77.       Next
  78.    End Sub
  79.  
  80.  
  81.  
  82.    Sub DeleteOnlyDataEndApp()
  83.       DataEndAppList = New List(Of DataEndAppCS)
  84.  
  85.       ReadDataEndAppFromDBLocaleForDelete()
  86.  
  87.       RaiseEvent MaxProgressDeleted(DataEndAppList.Count)
  88.  
  89.       Dim i As Integer = 0
  90.       For Each item As DataEndAppCS In DataEndAppList
  91.          Try
  92.             DataEndAppDB.DeleteDataEnd(item.IdEndApp)
  93.          Catch ex As Exception
  94.             MessageBox.Show("error transfer data to Server: " & ex.ToString, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
  95.             Exit Sub
  96.          End Try
  97.          i += 1
  98.          RaiseEvent ProgressDeleted(i)
  99.          
  100.       Next
  101.    End Sub
  102.  
  103.  
  104. #Region "ReadDataFromDBLocaleForDelete"
  105.    Public Shared Function ReadDataStartAppFromDBLocaleForDelete() As Boolean
  106.       Dim stReturn As Boolean = True
  107.       Try
  108.          DataStartAppList = DataStartAppDB.GetDataStartListForDelete
  109.       Catch ex As SqlException
  110.          stReturn = False
  111.          Throw ex
  112.  
  113.       End Try
  114.       Return stReturn
  115.  
  116.    End Function
  117.  
  118.    Public Shared Function ReadDataEndAppFromDBLocaleForDelete() As Boolean
  119.       Dim stReturn As Boolean = True
  120.       Try
  121.          DataEndAppList = DataEndAppDB.GetDataEndListForDelete
  122.       Catch ex As SqlException
  123.          stReturn = False
  124.          Throw ex
  125.  
  126.       End Try
  127.       Return stReturn
  128.  
  129.    End Function
  130. #End Region
  131.  
  132.  
  133.  
  134.    Sub New()
  135.  
  136.    End Sub
  137. End Class



che provvede a cancellarmi i record nel db di riferimento che passo in una lista in quanto soddisfano certe condizioni.
Nel form in cui viene istanziata l'oggetto FD corrispondente ed agganciate i relativi eventi ha tra le altre queste routine principali:

Codice sorgente - presumibilmente VB.NET

  1. Public Class frmDeleteDatiLocali
  2.  
  3.    Private WithEvents FD As FunDeletedLocalData
  4.  
  5.    Private Sub btnAccept_Click(sender As Object, e As EventArgs) Handles btnAccept.Click
  6.       btnClose.Enabled = False
  7.       btnAccept.Enabled = False
  8.       Me.lblRecDeleted.Visible = True
  9.       Me.prgBar.Visible = True
  10.       Me.Refresh()
  11.       Dim FD = New FunDeletedLocalData
  12.       If rdTDAll.Checked Then
  13.          FD.DeleteAllDataApp()
  14.       ElseIf rdStartApp.Checked Then
  15.          FD.DeleteOnlyDataStartApp()
  16.       ElseIf rdEndApp.Checked Then
  17.          FD.DeleteOnlyDataEndApp()
  18.       End If
  19.       FD = Nothing
  20.       btnAccept.Enabled = True
  21.       btnClose.Enabled = True
  22.       Me.prgBar.Visible = False
  23.    End Sub
  24.  
  25.    Private Sub FD_ProgressDeleted(value As Integer) Handles FD.ProgressDeleted
  26.      
  27.       Me.prgBar.Maximum = value
  28.  
  29.    End Sub
  30.  
  31.    Private Sub FD_MaxProgressDeleted(value As Integer) Handles FD.MaxProgressDeleted
  32.      
  33.       Me.lblRecDeleted.Text = "Record Cancellati: " & value.ToString
  34.       Me.prgBar.PerformStep()
  35.       Me.Refresh()
  36.      
  37.    End Sub



Il tutto funziona correttamente e i record di fatto vengono cancellati e non ho alcun errore.
La sola cosa che non funziona sono gli eventi dell'oggetto:
Codice sorgente - presumibilmente C# / VB.NET

  1. RaiseEvent MaxProgressDeleted(DataEndAppList.Count)
  2.  RaiseEvent ProgressDeleted(i)



Come mai? In una classe molto simile direi identica in quanto esattamente uguale funziona perfettamente e le uniche differenze nelle varie routine sono le chiamate del tipo:
Codice sorgente - presumibilmente Plain Text

  1. DataEndAppDB.DeleteDataEnd(item.IdEndApp)


in quanto gli serve solo l'iD per cancellare il record,
mentre nell'altra classe sono del tipo:
Codice sorgente - presumibilmente Plain Text

  1. DataEndAppSQLDB.AddEndApp(item)


in quanto usa tutto il record.

Come mai il RaiseEvent non viene eseguito?. Dov'è il problema?
Grazie in anticipo a tutti per l'aiuto.8-|

Ultima modifica effettuata da alip1 il 25/04/2020 alle 12:11
PM Quote